1

我使用 ssh2-sftp-client 来获取一些文件。如果我使用 sftp.end(); 最后,我在控制台中收到此错误:

{ Error: fastGet->exists->exists: No SFTP connection available
    at Object.formatError (/home/project/node_modules/ssh2-sftp-client/src/utils.js:62:18)
    at SftpClient.fastGet (/home/project/node_modules/ssh2-sftp-client/src/index.js:590:19)
    at process._tickCallback (internal/process/next_tick.js:68:7) code: 'ERR_NOT_CONNECTED', custom: true } 'Error'

...

我错过了什么?

4

1 回答 1

3

我认为目前正在发生的事情是,由于您没有Promise从 second返回 a then(),因此第三个then()会立即得到解决(值为undefined),这会导致您的连接立即终止(在您fastGet()的 s 有时间完成之前)。

要解决此问题,您需要Promise从第二个中显式返回 a then(),只有在所有文件都已传输后才能解决。如果至少有一个传输失败,您可能还需要考虑拒绝该承诺。

于 2020-06-10T19:44:50.170 回答