为什么我的错误不是以我的快速回复的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 });