14
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

VS CodeのSFTP拡張機能でNo such fileエラーを回避

Last updated at Posted at 2021-06-19

※より良い解決策を「 2021/09/24追記 」に記載した。

Linux上のファイルをVisual Studio Codeで楽に編集するため、VS CodeからSFTPでアップロード/ダウンロードしたいと考えた。

  • Windows 10 Pro 20H2
  • Visual Studio Code 1.57.1
  • SFTP 1.12.9 (SFTP/FTP sync, liximomo) 拡張機能

以下を参考にsftp.jsonを記述して、RemoteからLocalに同期を取った。

これでVS Codeで編集する環境が整ったので、あるファイルを修正してUploadを実行したところ、No such fileと言うエラーが表示された。
sftpのエラーメッセージを確認すると、編集したファイルが実際には存在するのに、存在しないと言っている様子であることが確認された。

検索したところ、sftpの不具合(Nodeとの不整合)であるとの記事が見つかった。

この記事に記載の通り、sftp.jsの2918行で定義されているWriteStream関数に options.autoDestroy = false; と追記し、VS Codeを再起動することでエラーを回避することができた。

C:\Users\ユーザー名\.vscode\extensions\liximomo.sftp-1.12.9\node_modules\ssh2-streams\lib\sftp.js

function WriteStream(sftp, path, options) {
  :
  :

  // For backwards compat do not emit close on destroy.
  options.emitClose = false;
  options.autoDestroy = false;

  :
  :
}

なお、本記事は、現時点でQiitaには同様の記事が見つからなかったので、共有を広めるために記載したものである。

2021/09/24追記

アップデートが2019年から止まっているliximomo氏のSFTPに変わり、Natizyskunk氏によりforkされたSFTPが登場している。
現時点では、No such fileエラーが出ず、現在も維持管理が行われているため、こちらをインストールすることを推奨する。

移行手順

  1. liximomo氏のSFTPを削除
  2. Natizyskunk氏のSFTPをインストール
  3. VS Codeを再起動

@taikisさん、ありがとうございました!)

2021/10/03追記

.vscode/sftp.json の "remotePath" で指定したサーバー側のパスをタイプミスしても、エラーにならず、新規ディレクトリと解釈される点に要注意である。
SFTP: Sync Remote -> Local を実行すると、サーバー側にはファイルがないので直ぐ正常終了となるため、指定したパスが間違っていることに気が付かない(SFTPプラグインの不正動作を疑ったらそこでハマる)。
SFTP: Upload Active File を実行すると、サーバー側に新しいディレクトリが作成されて、そこにファイルがアップロードされるので、ここでも指定したパスが間違っていることに気が付かない。(サーバー側の正しいディレクトリにあるファイルが更新されないが、ここでもSFTPプラグインの不正動作を疑ったらそこでハマる)。

エラーが起きないのに、意図した通りにアップロード/ダウンロードされない場合、 "remotePath" に指定したパスのタイプミスを最初に疑うべきである(自分への戒め)。

14
10
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?