【发布时间】:2017-12-25 08:02:47
【问题描述】:
我正在尝试从 S3 下载文件(我已成功上传文件)
const fs = require('fs');
const AWS = require('aws-sdk');
const S3 = AWS.S3;
const S3S = require('s3-streams');
const awsSettings = {
... // config stuff
}
var s3Instance = new S3(awsSettings);
module.exports = {
download: (remoteReference, bucket, saveFile) => {
return new Promise((resolve, reject) => {
let download = new S3S.ReadStream(s3Instance, {
Bucket: bucket,
Key: remoteReference
});
download.pipe(fs.createWriteStream(saveFile))
.on('finish', () => {
resolve();
})
.on('error', (err) => {
reject(err);
});
});
},
}
但是,调用下载时节点崩溃
崩溃日志:
server/node_modules/aws-sdk/lib/request.js:31
throw err;
^
Error: Uncaught, unspecified "error" event. ([object Object])
at S3ReadStream.emit (events.js:163:17)
at Request.httpHeaders (server/node_modules/s3-streams/lib/read.js:52:9)
at Request.callListeners (server/node_modules/aws-sdk/lib/sequential_executor.js:105:20)
at Request.emit (server/node_modules/aws-sdk/lib/sequential_executor.js:77:10)
at Request.emit (server/node_modules/aws-sdk/lib/request.js:683:14)
at IncomingMessage.onHeaders (server/node_modules/aws-sdk/lib/event_listeners.js:245:24)
at emitThree (events.js:116:13)
at IncomingMessage.emit (events.js:194:7)
at ClientRequest.<anonymous> (server/node_modules/aws-sdk/lib/http/node.js:46:16)
at ClientRequest.g (events.js:292:16)
at emitOne (events.js:96:13)
at ClientRequest.emit (events.js:188:7)
at HTTPParser.parserOnIncomingClient [as onIncoming] (_http_client.js:473:21)
at HTTPParser.parserOnHeadersComplete (_http_common.js:99:23)
at TLSSocket.socketOnData (_http_client.js:362:20)
at emitOne (events.js:96:13)
我不确定是什么导致了这个问题,但是深入挖掘 s3-streams 源,它似乎在请求 http 标头时失败并发出错误。
【问题讨论】:
-
尝试注释掉
.on('error'...位。然后是完成处理程序。仍然有错误? -
尝试跳过实例化
newS3S.ReadStream
标签: node.js amazon-web-services amazon-s3