我有一个带有简单错误处理程序的Express服务器。传递给它的所有错误对象都是Error
个对象。
const errorHandler = (err, req, res, next) => {
logError(`Express Error Handler: ${err}`);
res.status(500).json(err);
};
我使用request
调用服务器的路由:
request
.post(
{
uri: url,
timeout,
json: true,
form: {
currentStepUid,
sourceStepUid: previousStepUid,
config,
},
},
(error, response, body) => {
// Handle errors
}
)
});
我的问题是错误不是error
个对象,而是error
对象的body
属性。
我应该如何设置Express才能恢复错误对象?
答案 0 :(得分:2)
request.post()
未将500状态报告为错误。联系了http服务器并提供了响应。这不是它认为的错误。您可以根据自己的代码从http响应中检测该条件,然后将其视为您自己代码中的错误。
您需要查看实际响应以查看http 500状态代码。错误对象是http响应主体,因此应该是它的位置。这就是你需要从中获取它的地方。
如果你必须在多个地方做同样的逻辑,你可以为request.post()
创建自己的包装函数来检查http状态代码,如果它在你认为是错误的范围内,那么得到http响应正文并将其变为错误。