我该如何处理s3.getObject()引发的未处理异常

时间:2018-11-20 00:52:14

标签: javascript node.js amazon-s3

我正在尝试使用以下后端功能从S3获取图像:

exports.getImage = function (req, res) {
    let request = req.query;
    let key = request.key;
    let bucket = request.bucket;
    if (!key) {
        return res.status(400).end("missing key");
    }
    if (!bucket) {
        return res.status(400).end("missing bucket name");
    }
    let options = {
        Bucket: bucket,
        Key: key
    };

    res.setHeader('Content-Type', content_map['jpg']);

    let nimage = null;

    try {
        nimage = await s3.getObject(options).createReadStream().pipe(res);
    }
    catch (err) {
        console.log(err);
    }
};

可以看到,有一些措施可以防止请求中缺少keybucket,将status 400发送回去。但是,我要处理指定了错误的key或错误的bucket的情况。上面的代码中错误地处理了将错误的密钥添加到请求的情况。

我也使用下面的代码来处理它,但最终没有得到任何结果:

s3.getObject(options, function(err, data) {
    if (err) {
        return res.status(400).end(err);
    }
}).createReadStream().pipe(res);

弹出的错误是:

4:15:32 PM - error: caught an unhandled exception! NoSuchKey: The specified key does not exist.
NoSuchKey: The specified key does not exist.

0 个答案:

没有答案