使用 aws-serverless-express 进行错误处理

Tom*_*káč 5 amazon-web-services node.js express aws-lambda

我用来aws-serverless-express为我的 Express Web 服务提供 AWS Lambda 处理程序。

Lambda 可以工作,但是我无法从 Lambda 抛出错误。我尝试使用 try/catch 捕获整个无服务器代理,但即使应用程序抛出错误,它仍然会进入success状态。

索引.js

'use strict';
const awsServerlessExpress = require('aws-serverless-express');
const app = require('./dist/app');

const server = awsServerlessExpress.createServer(app);

exports.handler = (event, context, callback) => {
    try {
        context.callbackWaitsForEmptyEventLoop = false;
        context.succeed = (response) => {
            callback(null, response);
        };
        return awsServerlessExpress.proxy(server, event, context);
    } catch (e) {
        callback(e);
    }
};
Run Code Online (Sandbox Code Playgroud)

我有一个错误处理中间件(用作最后一个),它可以工作,但是将错误传递给next()或重新抛出错误似乎不会触发捕获index.js.

错误处理程序.js

const handleErrors = (err, req, res, next) => {

    res.setHeader('Content-Type', 'application/xml');
    res.status(200).send(DEFAULT_ERROR);
    next(err);
}
Run Code Online (Sandbox Code Playgroud)

有谁知道如何成功地从 Express 应用程序抛出错误并在处理程序中捕获?