C D*_*ter 1 javascript node.js express
我的快速应用程序中有一个默认的错误处理程序设置。
app.use(function unhandledErrorHandler(err, req, res, next) {
res.status(err.status || 500).json({
error: err
});
});
Run Code Online (Sandbox Code Playgroud)
但是,每当我调用路线并抛出错误时,我都会收到如下所示的响应。
{
"error": {}
}
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我理解为什么 Express 将我的错误作为空对象返回吗?
Error实例显示为空对象的原因是因为对象上的普通属性(.message例如.stack、 等)Error未设置为可枚举并且JSON.stringify()(由 所使用res.json())忽略不可枚举属性。
如果您只想发送消息部分(不包括堆栈跟踪),您可以这样做:
res.json({ error: err.message });
Run Code Online (Sandbox Code Playgroud)
或者
res.json({ error: { message: err.message } });
Run Code Online (Sandbox Code Playgroud)
否则,如果您想包含可能已附加到实例上的其他自定义可枚举属性Error,则可以将其设为.message可枚举,然后使用您现在使用的相同代码:
Object.defineProperty(err, 'message', { enumerable: true });
res.json({ error: err });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
702 次 |
| 最近记录: |