首页 > 解决方案 > 升级到 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 中是否有一些变化需要以不同的方式完成?

标签: node.jsfs

解决方案


推荐阅读