Error: No such file (sftp liximomo extension)

Error: No such file (sftp liximomo extension)

当我使用 visual studio 代码的扩展名 liximomo/vscode-sftp 在服务器上上传文件时遇到此问题。

[error] Error: No such file
    at SFTPStream._transform
    at SFTPStream.Transform._read
    at SFTPStream._read
    

我该如何解决这个问题?我尝试将文件上传到不同的服务器,所以我想这不是服务器相关的问题,而是扩展问题。

这显然是新版本的 VS Code 中引入的全新问题。通过修改扩展代码中的一行,我 FOUND A SOLUTION 似乎运行良好。 这仅对 liximomo.sftp 扩展的 1.12.9 版有效。

步骤如下:

  1. 关闭/退出 VS Code。
  2. 找到以下文件:
    Mac OS X:
    ~/.vscode/extensions/liximomo.sftp-1.12.9/node_modules/ssh2-streams/lib/sftp.js

    Windows:
    C:\Users\account_name\.vscode\extensions\liximomo.sftp-1.12.9\node_modules\ssh2-streams\lib\sftp.js
  3. 备份文件。
  4. 修改388行,应该是:
    if ( code === STATUS_CODE . OK ) { 改为:
    if (code === STATUS_CODE.OK || code === STATUS_CODE.NO_SUCH_FILE) {
  5. 保存文件。
  6. 重新启动 VS 代码;通过从您的 sftp 服务器上传或下载进行测试。错误不应存在。

替代解决方案涉及降级 VS Code 版本。 这是不可取的,因为您没有获得最新的修复、安全补丁等。

请参阅以下关于此问题的 link:

如果你想降级你的 VS Code;使用此 link 查找旧版本:

https://code.visualstudio.com/updates/v1_55


信用:
宝来自:https://blog.naver.com/PostView.nhn?blogId=pcgun70&logNo=222341271496
来自他们的博客条目(由 Google 翻译成英文):

"At first, there was no solution, but Now, 12 hours later, the Holy One appeared, who told me how to solve it.files that sftp cannot find in the first place. There is a calling phrase, VScode is upgraded and an error is called. It came out. Actually, I did not solve the problem. Even if the file is not found, the same result as the success process is exported. It is just a modification. It is expected that a modified version will be released in the future."

GitHub 有一个更好的修复程序,适用于通过 SFTP 扩展上传和下载:

Do a search inside ~/.vscode/extensions/liximomo.sftp-1.12.9/node_modules/ssh2-streams/lib/sftp.js for options.emitClose = false;

Add options.autoDestroy = false; after both instances.

- mrjcgoodwin commented 8 days ago

不是问题的答案,而是另一种(简单)方式的解决方案:

  1. 安装 运行 保存 VSCode 扩展

  2. 写一个deploy.sh脚本

    rsync -avz -e 'ssh -i /home/user/.ssh/id_rsa' --exclude '.history' --exclude '.vscode' --exclude '.git' --exclude '.gitignore' --exclude 'deploy.sh' ./ user@domain.net:/home/user/public_html/
    
  3. 将以下配置添加到 VSCode settings.json 以在文件保存时触发 deploy.sh 脚本:

    "emeraldwalk.runonsave": {
         "commands": [
             {
                 "match": ".*",
                 "isAsync": false,
                 "cmd": "${workspaceFolder}/deploy.sh"
             },            
         ]
     }
    

还有另一种解决方案,只从扩展中升级 ssh2 包。 你只需要去扩展路径:

Windows: C:\Users\your-user\.vscode\extensions\liximomo.sftp-1.12.9

当您在那里时,将 package.json 文件中 ssh2 包的版本更改为 ^1.1.0。最后,就 运行 npm install.

您应该重新启动 VSCode。

或者,您可以使用处于活动状态的存储库的分支并修复这些问题:https://github.com/Natizyskunk/vscode-sftp

直接切换到第二个: