我有以下代码可从ftp服务器下载文件。 ftp程序包创建一个读取流,然后将其通过管道传输到写入流。
ftp.connect(ftpConnObj)
.then(function (data) {
logging.log('Connected to FTP', clientId, jobId);
return ftp.get('files/student.txt');
}).then(function (stream) {
logging.log('Downloading student file', clientId, jobId);
return new Promise(function (resolve, reject) {
/*stream.once('close', function() {
console.log("close event called");
resolve();
});*/
stream.on('readable', function() {
console.log('readable');
});
stream.on('data', function(data) {
console.log(data);
});
stream.on('end', function() {
console.log('end');
});
stream.on('close', function() {
console.log('close');
});
stream.on('error', function(err) {
console.log(err);
});
var writeStream = fs.createWriteStream(dir + '/student.txt');
stream.pipe(writeStream);
writeStream.on('close', function() {
console.log('closed');
resolve();
});
});
使用节点8.15.1时,此代码可以正常工作。当我升级到节点10.15.3时,它不再起作用。读取流上的可读事件将被命中一次,但是此后没有其他事件被调用,因此代码只是挂起。
在节点10中是否发生了一些更改,要求以不同的方式进行?