为什么我的错误不是以我的快速回复的forms返回的?
我有一个默认error handling程序安装在我的快速应用程序中。
app.use(function unhandledErrorHandler(err, req, res, next) { res.status(err.status || 500).json({ error: err }); });
然而,每当我调用一个路由,并引发错误,我得到一个看起来像这样的响应。
{ "error": {} }
有人可以帮助我明白为什么快递将我的错误返回为空对象吗?
Error
实例显示为空对象的原因是因为Error
对象上的常规属性(例如.message
, .stack
等)没有设置为可枚举,而JSON.stringify()
(由res.json()
)忽略不可枚举的属性。
如果你只是想发送消息部分(不包括堆栈跟踪),你可以这样做:
res.json({ error: err.message });
要么
res.json({ error: { message: err.message } });
否则,如果你想包含其他可定制的,可枚举的属性,你可以使.message
可枚举,然后使用你现在使用的相同的代码:
Object.defineProperty(err, 'message', { enumerable: true }); res.json({ error: err });