node.js - 升级到 nodejs 10 后流无法正常工作
问题描述
我有以下代码从 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 中是否有一些变化需要以不同的方式完成?
解决方案
推荐阅读
- javascript - 我正在尝试从firestore获取用户并将它们存储在javascript中的地图中,但由于某种原因地图是空的
- python - readline() 方法给出错误:AttributeError: 'tuple' object has no attribute 'readline'
- amazon-web-services - AWS Cognito Token 端点来源是否必须与 Auth 端点来源相匹配?
- android - 将 Intent Uri 转换为路径
- javascript - 函数式编程:返回调用具有特定参数的不同函数列表的第一个真实结果
- python - 如何创建以常规文本为正文的 Google Doc?
- c++ - 使用 win32 函数和通过 system() 传递 cmd 命令有什么区别?
- css - 符号链接 node_modules 文件夹时,Angular 11 css 不起作用
- python - 为什么 concurrent.futures.ProcessPoolExecutor() 跳过迭代?
- reactjs - Nextjs 部署在 Vercel = 空白页面