我拉着使用s3.listObjects()
函數從AWS-SDK對象,我不斷收到以下錯誤:錯誤:在配置缺少憑據 - /nodeapp/node_modules/aws-sdk/lib/request.js:31
/nodeapp/node_modules/aws-sdk/lib/request.js:31
其次
Error: Missing credentials in config
at IncomingMessage.<anonymous> (/nodeapp/node_modules/aws-sdk/lib/util.js:863:34)
at emitNone (events.js:91:20)
at IncomingMessage.emit (events.js:186:7)
at endReadableNT (_stream_readable.js:974:12)
at _combinedTickCallback (internal/process/next_tick.js:74:11)
at process._tickDomainCallback (internal/process/next_tick.js:122:9)
這並不加起來因爲我有檢索來自S3對象沒有給我這個錯誤了不同的路線(downloadParam)。此外,當我註銷從downloadResults
路徑檢索到的對象時,似乎檢索到的對象沒有問題,但我仍然會得到此錯誤。
我花了在這個問題上小時,我似乎無法弄清楚這是爲什麼發生。我已經粘貼了下面兩個路由的代碼,一個是有效的,另一個不是。從我在線收集的信息來看,這看起來更像是一個代碼問題,而不是AWS-SDK的憑證問題。
downloadParam: function(app, s3){
app.use('/api', apiRoutes)
apiRoutes.get('/download-param-file', function(req, res, next){
res.set({'Content-Type':'text/csv'})
s3.getObject({Bucket: 'some-bucket', Key: 'some-key' + req.query.fileName}, function(err, file){
if (err) {
console.log(err);
return next(err);
} else {
return res.send(file.Body.toString());
}
})
})
},
downloadResults: function(app, s3){
app.use('/api', apiRoutes)
apiRoutes.get('/download-results-file', function(req, res, next){
res.set({'Content-type': 'application/zip'})
var params = {
Bucket: 'some-bucket',
Delimiter: '/',
Prefix: 'some-key'
};
var filesArray = []
var files = s3.listObjects(params).createReadStream()
var xml = new XmlStream(files)
xml.collect('Key')
xml.on('endElement: Key', function(item) {
filesArray.push(item['$text'].substr(params.Prefix.length))
})
xml.on('end', function() {
res.send(zip(filesArray, req.query.jobName, params))
})
})
}
由於現在downloadParams
作品如預期,但downloadResults
沒有。任何幫助將非常感激。
This link seems solve an issue similar to mine
凡定義apiRoutes? –
在我routes.js的頂端文件@JoachimBrandonLeBlanc – Mihado