我正在尝试使用easy-ftp软件包在远程ftp中上传csv文件,但有时会上传并有时会显示错误,如下面的图像
这是我的代码
let ftp = new EasyFtp();
try{
const config = {
host: 'ftp.saba.com',
port: 21,
username: 'username',
password: 'password',
type : 'ftp'
};
ftp.connect(config);
ftp.upload(csvName, "/csvs/", function (err) {
try {
fs.unlink(csvName, (err) => {
if (err) {
console.log(err);
return;
}
});
} catch(error) {
console.log(error);
}
});
} catch(error) {
console.log(error);
}
我找不到解决该问题的有用资源,现在该怎么办?
谢谢
答案 0 :(得分:1)
这是一个异步问题。连接成功后,您需要上传文件。
代码应为:
ftp.on('open', function(){
ftp.upload(csvName, "/csvs/", function (err) {
// process upload result
});
});
ftp.connect(config);
在您的代码中,upload
请求在connect
操作之后立即发送。如果幸运的话,当easy-ftp尝试执行upload
操作时,先前的connect
已经完成并且成功了,那么upload
也将成功。
如果不走运,当easy-ftp尝试进行upload
操作时,前一个connect
仍未完成。然后upload
将失败并显示“无法读取属性...”错误(看起来easy-ftp应该显示一些更好的错误消息)。
要解决此问题,您需要在easy-ftp中收听"open" event,并且仅在发出该事件时上传文件:
open(
client)-连接和身份验证成功时发出。