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
return是一个WriteStream
对象。但是 the documentation 指出:“返回的承诺解析为未定义。”
- 文件未正确上传,因为它的大小为 0,即使缓冲区的大小正确。
end
调用不再 return。
- 将图像的文件名传递给
put
导致调用不再 returning(即使在这种情况下文件已正确上传)。
- 使用
.then
链会导致同样的问题(显然?)。
我已经尝试在 put
之后立即调用 ftp.stat
。这样做会导致 return 不再从 stat
调用中调用。我有另一个函数调用 ftp.unlink
而不是 put
,它工作正常。这就是为什么我猜 put
调用是罪魁祸首。
我是不是做错了什么?有什么方法可以调试我的代码以查看 happening/what 出了什么问题?
经过进一步调查,我发现上传的图片在将文件名传递给put
时也被截断了。我尝试输出调试信息(使用传递给 connect
调用的 debug
参数),但我看不到任何有用的提示来解决我的问题。
阅读 promise-sftp
软件包的文档,我意识到上次更新以及最新一期都超过 3 年了,文档从 0.9.0 版本开始就没有更新过。由于一些问题被标记为“需要帮助”,我的猜测是,该软件包没有得到积极维护。
所以我最终切换到包 ssh2-sftp-client
,它是最新的。我什至不必更改代码(显然只需要更改 require
参数),现在上传工作完美无缺。
我正在开发一个 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
return是一个WriteStream
对象。但是 the documentation 指出:“返回的承诺解析为未定义。”- 文件未正确上传,因为它的大小为 0,即使缓冲区的大小正确。
end
调用不再 return。- 将图像的文件名传递给
put
导致调用不再 returning(即使在这种情况下文件已正确上传)。 - 使用
.then
链会导致同样的问题(显然?)。
我已经尝试在 put
之后立即调用 ftp.stat
。这样做会导致 return 不再从 stat
调用中调用。我有另一个函数调用 ftp.unlink
而不是 put
,它工作正常。这就是为什么我猜 put
调用是罪魁祸首。
我是不是做错了什么?有什么方法可以调试我的代码以查看 happening/what 出了什么问题?
经过进一步调查,我发现上传的图片在将文件名传递给put
时也被截断了。我尝试输出调试信息(使用传递给 connect
调用的 debug
参数),但我看不到任何有用的提示来解决我的问题。
阅读 promise-sftp
软件包的文档,我意识到上次更新以及最新一期都超过 3 年了,文档从 0.9.0 版本开始就没有更新过。由于一些问题被标记为“需要帮助”,我的猜测是,该软件包没有得到积极维护。
所以我最终切换到包 ssh2-sftp-client
,它是最新的。我什至不必更改代码(显然只需要更改 require
参数),现在上传工作完美无缺。