我使用无服务器来实现Lambda和Api网关。 当我实现错误处理时,下面的代码总是得到502坏网关。
handler.js
module.exports.hello = (event, context, callback) => {
const response = {
statusCode: 400,
headers: {
"Content-Type" : "application/json"
},
body: JSON.stringify({
"status": "error",
"message": "Missing Params"
})
};
callback(response);
};
CloudWatch执行日志错误。
{
"errorMessage": "[object Object]"
}
我按照这种方式进行编码,方法是"自定义错误对象序列化"在AWS博客下面。 Ref
答案 0 :(得分:4)
我将callback first parms更改为null并正常工作。 Ref
module.exports.hello = (event, context, callback) => {
const response = {
statusCode: 400,
headers: {
"Content-Type" : "application/json"
},
body: JSON.stringify({
"status": "error",
"message": "Missing Params"
})
};
callback(null, response);
};
答案 1 :(得分:0)
这是Node.js中的常见模式,称为 错误优先回调 。
基本上,如果你将第一个参数传递给你的回调,它将被视为错误。
正如你所提到的,一旦你放了callback(null, response);
,它就会按预期工作,因为第一个参数是null。