VSCodeのプラグインSFTPでアップロードに失敗する

備忘録

お疲れ様です。すぺきよです。

今日は仕事中にハマった小ネタです。

なにがあったの?

VSCodeのSFTPでファイルをサーバーにアップロードしながら開発をしていると、ある時突然ファイルのアプロードに失敗するようになりました。

詳細を確認すると、以下のようなメッセージが出力されてアップロードに失敗しているようです。

[09-04 14:57:23] [error] Error: Failure
	at 101 (***/.vscode/extensions/natizyskunk.sftp-1.16.3/node_modules/ssh2/lib/protocol/SFTP.js:2854:19)
	at SFTP.push (***/.vscode/extensions/natizyskunk.sftp-1.16.3/node_modules/ssh2/lib/protocol/SFTP.js:278:11)
	at CHANNEL_DATA (***/.vscode/extensions/natizyskunk.sftp-1.16.3/node_modules/ssh2/lib/client.js:587:23)
	at 94 (***/.vscode/extensions/natizyskunk.sftp-1.16.3/node_modules/ssh2/lib/protocol/handlers.misc.js:930:16)
	at Protocol.onPayload (***/.vscode/extensions/natizyskunk.sftp-1.16.3/node_modules/ssh2/lib/protocol/Protocol.js:2052:10)
	at AESGCMDecipherNative.decrypt (***/.vscode/extensions/natizyskunk.sftp-1.16.3/node_modules/ssh2/lib/protocol/crypto.js:987:26)
	at Protocol.parsePacket [as _parse] (***/.vscode/extensions/natizyskunk.sftp-1.16.3/node_modules/ssh2/lib/protocol/Protocol.js:2021:25)
	at Protocol.parse (***/.vscode/extensions/natizyskunk.sftp-1.16.3/node_modules/ssh2/lib/protocol/Protocol.js:306:16)
	at Socket.<anonymous> (***/.vscode/extensions/natizyskunk.sftp-1.16.3/node_modules/ssh2/lib/client.js:775:21)
	at Socket.emit (node:events:513:28)
	at addChunk (node:internal/streams/readable:315:12)
	at readableAddChunk (node:internal/streams/readable:289:9)
	at Readable.push (node:internal/streams/readable:228:10)
	at TCP.onStreamRead (node:internal/stream_base_commons:190:23) 

試しにソースコードを見てみましたが、よくわかりませんでした。

原因は既存の同名ファイル

原因はフォルダと同名のファイルがすでにサーバーにあったことです。

サーバー上に「/example」というファイルがすでに存在している状態で、「/example/file.js」というファイルをアップロードしようとすると、このエラーが出てファイルアップロードに失敗します。

修正方法

サーバー上にすでに存在しているフォルダと同名のファイルを削除するか、ファイルの名前を変更しましょう。

もし、ファイルが必要であるならば、VSCode上のフォルダ名の方を変更しましょう。

どうしてこんなことが起こったか

VSCode上でフォルダを新規に作成するときに、誤ってファイルを新規作成してしまったためです。

その後間違いに気づきVSCode上で、間違えて作成してしまったファイルを削除し、フォルダを作り直して作業を続けていたのですが、サーバー上のファイルは削除されなかったため、このようなエラーが出るようになりました。

たぶん、サーバー上に新しいフォルダを作ろうとして、名前が重複していたために作成に失敗し、このエラーになったのでしょう。

再現方法

再現方法は以下の通りです。

  1. VSCode上で任意のフォルダに「example」というファイルを作成して、サーバーにアップロード
  2. VSCode上で「example」というフォルダを作り直し、フォルダ内に「file.js」というファイルを作成して、サーバーにアップロード

この2.の段階でエラーが出てアップロードに失敗します。

まとめ

今回はVSCodeのSFTPプラグインでアップロードが失敗するパターンの一つを解説しました。

こんなミスせんやろ、と思われるようなミスでもしてしまうのが人の常。備忘録として記録しておきます。

誰かのお役に立てば幸いです。

タイトルとURLをコピーしました