promise-sftp 在 'put' 后挂起

promise-sftp hangs after 'put'

我正在开发一个 NodeJS 组件,使用 promise-sftp 版本 0.11.3 将文件上传到 SFTP 服务器。我基本上是在做这些步骤:

const PromiseFtp = require('promise-sftp');
const ftp = new PromiseFtp();
await ftp.connect(...);
await ftp.put(imageBuf, './subdir/fileName');
await ftp.end();

我确保所有步骤在 put 之前都正常工作。 imageBuf是一个存储二进制图像数据的Buffer对象。我有这些我不明白的影响:

我已经尝试在 put 之后立即调用 ftp.stat。这样做会导致 return 不再从 stat 调用中调用。我有另一个函数调用 ftp.unlink 而不是 put,它工作正常。这就是为什么我猜 put 调用是罪魁祸首。

我是不是做错了什么?有什么方法可以调试我的代码以查看 happening/what 出了什么问题?

经过进一步调查,我发现上传的图片在将文件名传递给put时也被截断了。我尝试输出调试信息(使用传递给 connect 调用的 debug 参数),但我看不到任何有用的提示来解决我的问题。

阅读 promise-sftp 软件包的文档,我意识到上次更新以及最新一期都超过 3 年了,文档从 0.9.0 版本开始就没有更新过。由于一些问题被标记为“需要帮助”,我的猜测是,该软件包没有得到积极维护。

所以我最终切换到包 ssh2-sftp-client,它是最新的。我什至不必更改代码(显然只需要更改 require 参数),现在上传工作完美无缺。