LoginSignup
0
0

More than 3 years have passed since last update.

[備忘録][ワークアラウンド]Visual Studio Codeの拡張機能「SFTP」が「No such file」と言って動かなくなった! on Windows

Posted at

はじめに

※本記事のファイルパスの hoge は、適宜ユーザ名に読み替えてください。

Visual Studio Code(以下「VSCode」と記します)の拡張機能に「SFTP」というものがあります。

SFTPを使ってサーバ側とクライアント側でファイルの同期ができる拡張機能で、当方ではhokkaidosm.net プリキュアデータの開発用サーバとのファイル同期に使用しています。

発生した事象について

先日オープンしたこちらのページ。

このページに、鑑賞履歴を追加しようとJSONを編集。
いつも通り保存すると、本来であれば開発用サーバに新しいファイルが送信され、開発用サーバで確認することができるのですが…。

[05-29 20:13:51] [error] Error: No such file
    at SFTPStream._transform (c:\Users\hoge\.vscode\extensions\liximomo.sftp-1.12.9\node_modules\ssh2-streams\lib\sftp.js:412:27)
    at SFTPStream.Transform._read (internal/streams/transform.js:205:10)
    at SFTPStream._read (c:\Users\hoge\.vscode\extensions\liximomo.sftp-1.12.9\node_modules\ssh2-streams\lib\sftp.js:183:15)
    at SFTPStream.Transform._write (internal/streams/transform.js:193:12)
    at writeOrBuffer (internal/streams/writable.js:358:12)
    at SFTPStream.Writable.write (internal/streams/writable.js:303:10)
    at Channel.ondata (internal/streams/readable.js:719:22)
    at Channel.emit (events.js:315:20)
    at addChunk (internal/streams/readable.js:309:12)
    at readableAddChunk (internal/streams/readable.js:284:9)
    at Channel.Readable.push (internal/streams/readable.js:223:10)
    at SSH2Stream.<anonymous> (c:\Users\hoge\.vscode\extensions\liximomo.sftp-1.12.9\node_modules\ssh2\lib\Channel.js:167:15)
    at SSH2Stream.emit (events.js:315:20)
    at parsePacket (c:\Users\hoge\.vscode\extensions\liximomo.sftp-1.12.9\node_modules\ssh2-streams\lib\ssh.js:3288:10)
    at SSH2Stream._transform (c:\Users\hoge\.vscode\extensions\liximomo.sftp-1.12.9\node_modules\ssh2-streams\lib\ssh.js:694:13)
    at SSH2Stream.Transform._read (internal/streams/transform.js:205:10)
    at SSH2Stream._read (c:\Users\hoge\.vscode\extensions\liximomo.sftp-1.12.9\node_modules\ssh2-streams\lib\ssh.js:253:15)
    at SSH2Stream.Transform._write (internal/streams/transform.js:193:12)
    at writeOrBuffer (internal/streams/writable.js:358:12)
    at SSH2Stream.Writable.write (internal/streams/writable.js:303:10)
    at Socket.ondata (internal/streams/readable.js:719:22)
    at Socket.emit (events.js:315:20)
    at addChunk (internal/streams/readable.js:309:12)
    at readableAddChunk (internal/streams/readable.js:284:9)
    at Socket.Readable.push (internal/streams/readable.js:223:10)
    at TCP.onStreamRead (internal/stream_base_commons.js:188:23) when local ➞ remote c:\Users\hoge\Documents\precure\html_precure\movies\history\data\29_yumenomachi.json

突然ファイルがSFTPサーバにアップできなくなってしまったのです。

思い当たる節は…?

今回更新したファイルですが、SSH経由で確認するとちゃんと所定の場所にありました。
しかも先週、同じ方法でトロプリ1第13話の口癖データの更新に成功しているのです。

あえて言うならば、VSCodeのバージョンアップがあったくらいかな…?

こういうときはIssuesが上がっていないか見てみる

サーバの設定も一切いじっていないので、もしかして同じ事象に遭遇した人がそのことを書いているのかも、と思い、この拡張機能のリポジトリにあるIssuesをチェック。
するとドンピシャのIssueが上がっていました。

そこにはこんなコメントが。

  1. Do a search inside ~/.vscode/extensions/liximomo.sftp-1.12.9/node_modules/ssh2-streams/lib/sftp.js for options.emitClose = false;
  2. Add options.autoDestroy = false; after both instances.

私はWindowsユーザですのでどのファイルを開けば良いのかわかりません、という方のために上記を日本語化してWindows対応にした手順を記載します。

解決方法 for Windows

  1. %USERPROFILE%\.vscode\extensions\liximomo.sftp-1.12.9\node_modules\ssh2-streams\lib\sftp.js ファイルを、何らかのテキストエディタで開きます。
    たいていの場合は C:\Users\hoge\.vscode\extensions\liximomo.sftp-1.12.9\node_modules\ssh2-streams\lib\sftp.js というパスになるかと思います。
  2. 検索コマンドで、 options.emitClose = false; を検索します。2箇所在ります。
  3. 検索コマンドで見つかった options.emitClose = false; のあとに、(改行を入れるか入れないかはお任せします)options.autoDestroy = false; と記載します。2箇所とも同じ記載を入れます。
  4. すでにVSCodeを立ち上げている場合は、それを再起動するか Ctrl+Shift+P でコマンドパレットを開き、 Developer: Reload Window を実行します。

終わりに

こうして、鑑賞履歴に今日のデータを追加することができました。

ただ、この拡張機能、リポジトリを見る限り最終更新が2年前なんですよね…。

こんなIssueまで立てられてしまっています。

代わりになる拡張機能ってないですかね?

拡張機能に求めるもの

  • ファイルを更新すると、自動的にSFTPで指定フォルダにアップしてくれること。フォルダがなければ作成もしてくれること。
  • 公開鍵認証(*.ppk、パスフレーズ付き)が可能なこと。
  • SFTPサーバ側のポート番号を指定できること(攻撃防御のため、ポート番号を標準のものとは別の番号にしてあります)。
  • アップロードしないファイルやフォルダをその名前で指定できること(.vscodeとか.gitとかはアップロードしないようにする必要があります)。

  1. 「トロピカル~ジュ!プリキュア」の略称 

0
0
0

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
0
0