【VS Code】拡張機能「SFTP」のエラーまとめ
「Visual Studio Code」の拡張機能「SFTP」でエラーメッセージが出た時の備忘録
拡張機能「SFTP」の設定方法はこちら
エラーメッセージ+空のファイルがアップロードされる
以下のようなエラーメッセージとポップアップが出た。
アップロードはできるが空のファイルがアップロードされるという現象。
[warn] ENOENT: no such file or directory, open 'C:\Users\<username>\.ssh\config' load C:\Users\<username>\.ssh\config failed
[error] TypeError: Cannot set property closed of #<Writable> which has only a getter
対応策1:パス「C:\」を「/」に変換する
ファイルパスの記述を以下に変更したら一時的にアップロードが上手くいくようになった
※Windowsの「C:\」は「/」に変換する必要あるよう
// × 間違った書き方
"privateKeyPath": "C:/Users/ユーザー名/….ppk",
// ○ 正しい書き方
"privateKeyPath": "/Users/ユーザー名/….ppk",
しかし、2度目行ったら再度ポップアップが表示され、空のファイルがアップロードされるなど元に戻ってしまった。
対応策2:sftp.jsonの修正
GitHubのIssuesを参考に"profiles": {}
や"context"
を追加するが変化なし。
解決策:「SFTP」のプラグインの変更
「SFTP」のプラグインのキャッシュなどが問題の可能性がある、という記事を見たので再インストールし直そうしたところ「liximomo.sftp-1.12.10」は非推奨
のため「natizyskunk.sftp-1.16.3」を使うように案内が表示された。
案内に従い、「natizyskunk」の「SFTP」のプラグインを使ったところ、ポップアップと空のファイルがアップロードされる現象は消えた。
しかし、[warn] ENOENT: no such file or directory, open 'C:\Users\
のエラーは消えてない。
とりあえずが、アップロードされているので取り急ぎ無視。
「/.ssh/config」とは?(メモ)
[warn] ENOENT: no such file or directory, open 'C:\Users\
というエラーを直そうと思うと.ssh
ディレクトリとconfig
ファイルを作る必要がありそう。
- 「/.ssh/config」は、SSH接続を簡単にしたり、複数のSSH接続を管理できる
- 「OpenSSH」などをインストールすると
C:\Users\ユーザー名\.ssh
が生成されるらしい、なければ手動で作成する HostName:ホスト名(「ssh ホスト名」で接続)
User:ログインユーザ名
port:ポート番号
IdentityFile:秘密鍵へのパス
これらをconfig
で管理
ssh接続を調べていると、C:\Users\ユーザー名\.ssh
があることが一般的のような記事を見るため、VS Codeのプラグイン「SFTP」もデフォルトで参照する設定なのかもしれない。
もし、config
ファイルを用意するなら、sftp.json
からポートや秘密鍵の記載は削除しても動く可能性あり?
エラーメッセージ:「Error: No such file」
「liximomo」の「SFTP」プラグインの方は現在、バージョン「liximomo.sftp-1.12.10」なのでエラーは出ないが、「liximomo.sftp-1.12.9」だとError: No such file
というエラー(ポップアップ)が出るので、以下のsftp.js
ファイルにoptions.autoDestroy = false;
の記述を追加
C:\Users\(ユーザーフォルダ名)\.vscode\extensions\liximomo.sftp-1.12.9\node_modules\ssh2-streams\lib\sftp.js
options.emitClose = false;
// ↓ 追加
options.autoDestroy = false;
一応、「sftp-1.12.10」の方では上記記述が追記されているが、別のエラーが出るので、「natizyskunk」の「SFTP」のプラグインを使った方が良いのかもしれない。