【发布时间】:2014-01-24 11:57:16
【问题描述】:
我正在使用 Nodejs 流从 S3 下载文件并作为可写流直接通过管道传输到本地文件夹。保存本地文件后,我会进行一些额外的处理以将本地文件重新调整为多个版本并重新上传到 S3。
下面的代码正确地从 S3 下载文件并存储在本地文件夹中。我已经确认这有效。
var readable = request(path)
, writable = fs.createWriteStream('files/images/' + fileName);
var localPath = 'files/images/' + fileName;
winston.log('info', "About to start download: " + asset.fileType);
readable.pipe(writable)
//once the file is saved, start processing it
.on('error', function(error){
winston.log('error', error);
})
.on('finish', function () {
winston.log('info', "file downloaded");
series(localPath, sizesKey.shift(), respond);
readable.end();
writable.end();
}).on('error', function(error){
winston.log('error', error);
});
当我在本地机器上运行我的脚本时,一切正常,我的脚本的其余部分继续运行,没有任何问题。
但是,当从带有 Node v.10.10 的 Amazon EC2 LINUX 运行时,会在上述代码运行后引发以下错误,但并非总是同时发生。例如,在重新调整大小、成功调整大小之后,甚至在 S3 上传期间,可能会出现错误,这些都发生在上面的代码应该完成之后。
我的猜测是我没有正确关闭流,可以这么说,它只是关上了我的门。尽管如此,我现在还是在黑暗中拍摄。
这是错误:
events.js:72
throw er; // Unhandled 'error' event
^
Error: spawn ENOENT
at errnoException (child_process.js:980:11)
at Process.ChildProcess._handle.onexit (child_process.js:771:34)
【问题讨论】:
标签: node.js amazon-s3 stream pipe