为什么expressjs不将Javascript错误对象视为对象

为什么expressjs不将Javascript错误对象视为对象,javascript,Javascript,我有一个node/express后端。在我的后端,如果有错误,我会创建一个错误对象,但当我尝试在响应中发送它时,它不在那里。通过在响应中构建一个新对象,我可以使代码正常工作,但我想知道为什么它不工作 有关守则如下: var error = new Error('some error message') app.send({error}) // returns {} app.send({error: error.message}) // returns {error: 'some error

我有一个node/express后端。在我的后端,如果有错误,我会创建一个错误对象,但当我尝试在响应中发送它时,它不在那里。通过在响应中构建一个新对象,我可以使代码正常工作,但我想知道为什么它不工作

有关守则如下:

var error = new Error('some error message')

app.send({error}) // returns {}

app.send({error: error.message}) // returns {error: 'some error message}

根据MDN文档,错误对象是一个对象,因此我们应该能够将其直接传递到app.send()。这在实践中不起作用,我想解释一下原因。谢谢你的帮助

我假设
app.send
将值转换为JSON。而
消息
不可枚举:

> Object.getOwnPropertyDescriptor(new Error('foo'), 'message');
Object {value: "foo", writable: true, enumerable: false, configurable: true}

可能相关:这是同一个问题,但我在寻找为什么而不是如何。