Cha*_*ish 1 javascript amazon-s3 amazon-web-services node.js express
我正在尝试构建一个Express服务器,该服务器将使用Node.js和Express将S3存储桶中的项目发送到客户端。
我在AWS文档中找到以下代码。
var s3 = new AWS.S3({apiVersion: '2006-03-01'});
var params = {Bucket: 'myBucket', Key: 'myImageFile.jpg'};
var file = require('fs').createWriteStream('/path/to/file.jpg');
s3.getObject(params).createReadStream().pipe(file);
Run Code Online (Sandbox Code Playgroud)
我对以下内容做了些微更改:
app.get("/", (req, res) => {
const params = {
Bucket: env.s3ImageBucket,
Key: "images/profile/abc"
};
s3.getObject(params).createReadStream().pipe(res);
});
Run Code Online (Sandbox Code Playgroud)
我相信这应该很好。我遇到的问题是文件不存在或S3返回某种类型的错误。应用程序崩溃,出现以下错误:
NoSuchKey:指定的密钥不存在
我的问题是,如何捕捉或处理此错误?我尝试了一些操作,例如将该s3.getObject行包装在try / catch块中,但所有这些都没有用。
如何捕捉错误并以自己的方式处理?
我想您可以通过先侦听错误发射器来捕获错误。
s3.getObject(params)
.createReadStream()
.on('error', (e) => {
// NoSuchKey & others
})
.pipe(res)
.on('data', (data) => {
// data
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
607 次 |
| 最近记录: |