VSCode 最新の1.57.1に更新したらSFTP拡張機能がエラーを出したので対応

VSCode

開発ではVSCode利用しています。で、ファイルを保存するとローカルのVMにSFTPでファイルアップロードしてそのまま確認できる。というような感じの開発環境です。

 

プラグインはこれです。SFTPプラグインです。

SFTP - Visual Studio Marketplace
Extension for Visual Studio Code - SFTP/FTP sync

 

エラーがでる

VSCodeを最新の1.57.1にアップデートして、SFTP拡張機能を利用してファイルをアップロードすると、エラーを吐くようになりました。ファイルをアップロードは出来ているものの、エラーが出ます。

 

2021/06/19追記

VSCodeの最新1.57.1でも同様の現象が発生しており、同じ手順で対応することが出来ます。

 

No such file(ファイルが見つかりません)だそうです。

 

どうも、内部のNodeのバージョンが上がったことによる、仕様変更について行けなくなったようですね。SFTPプラグインの更新が2019年で止まっているので、まぁ仕方ないですね。

 

コードを変更して対応

世の中、素晴らしい方がいます。あやかります。

~/.vscode/extensions/liximomo.sftp-1.12.9/node_modules/ssh2-streams/lib/sftp.jsの2928行目辺りに以下

options.autoDestroy = false;

を一行追加します。WriteStrimgという関数の中ですね。

 

SFTP error upload no such file after update VS code 1.56.0 · Issue #919 · liximomo/vscode-sftp
Issue Type: Bug while upload a file from local to remote, it show an error no such file and connection time out 10000. b...
function WriteStream(sftp, path, options) {
  if (options === undefined)
    options = {};
  else if (typeof options === 'string')
    options = { encoding: options };
  else if (options === null || typeof options !== 'object')
    throw new TypeError('"options" argument must be a string or an object');
  else
    options = Object.create(options);

  // For backwards compat do not emit close on destroy.
  options.emitClose = false;
  options.autoDestroy = false; // これを追加する

  WritableStream.call(this, options);

一旦解決しました!