我正在使用
检查远程文件没有问题,因此连接正常。
我的环境是
我遇到的问题是错误。
我不知道是什么原因导致了这个错误,我已经尝试过不同的路径,但要么出现了错误的路径,要么就是出现了这种情况。可能的原因是什么?
node -v v14.17.0
和 "ssh2-sftp-client": "^7.0.0"
,并且使用方法 fastPut
https://github.com/theophilusx/ssh2-sftp-client#sec-5-2-9。检查远程文件没有问题,因此连接正常。
我的环境是
wsl2 Ubuntu-20.04
。我遇到的问题是错误。
RuntimeError: abort(Error: fastPut: No response from server Local: /home/draganddrop/testi.txt Remote: Downloads/testi.txt). Build with -s ASSERTIONS=1 for more info.
at process.J (/home/draganddrop/node_modules/ssh2/lib/protocol/crypto/poly1305.js:20:53)
at process.emit (events.js:376:20)
at processPromiseRejections (internal/process/promises.js:245:33)
at processTicksAndRejections (internal/process/task_queues.js:96:32)
我也尝试过在控制台中使用 sftp> put /home/draganddrop/testi.txt Downloads/testi.txt
,这个方法可行。
我使用的代码:
let Client = require('ssh2-sftp-client');
let sftp = new Client();
let remotePath = 'Downloads/testi.txt';
let localPath = '/home/draganddrop/testi.txt'
const config = {
host: 'XX.XX.XXX.XXX',
port: '22',
username: 'XXXXX',
password: 'XXXXXX'
};
sftp.connect(config)
.then(() => {
sftp.fastPut(localPath, remotePath);
//return sftp.exists(remotePath);
})
//.then(data => {
// console.log(data); // will be false or d, -, l (dir, file or link)
//})
.then(() => {
sftp.end();
})
.catch(err => {
console.error(err.message);
});
我不知道是什么原因导致了这个错误,我已经尝试过不同的路径,但要么出现了错误的路径,要么就是出现了这种情况。可能的原因是什么?
then
中存在问题,它在放置文件之前关闭连接,请尝试在第一个then
中返回promisereturn sftp.fastPut(localPath, remotePath);
。 - Pavlo Naumenko