为什么Javascript Error对象不被expressjs视为对象

时间:2014-12-02 07:01:24

标签: javascript

我有一个节点/快速后端。在我的后端,如果出现错误,我会创建一个错误对象,但是当我尝试在响应中发送它时,它就不存在了。我能够通过在响应中构建一个新对象来使我的代码工作,但我想知道它为什么不起作用。

相关代码是:

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

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

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

根据MDN文档,错误对象是一个对象,因此我们应该能够将它直接传递给app.send()。这在实践中没有奏效,我希望能够解释原因。谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

我假设app.send将值转换为JSON。 JSON.stringify only considers (own) enumerable propertiesmessage不可枚举:

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