我有一个节点/快速后端。在我的后端,如果出现错误,我会创建一个错误对象,但是当我尝试在响应中发送它时,它就不存在了。我能够通过在响应中构建一个新对象来使我的代码工作,但我想知道它为什么不起作用。
相关代码是:
var error = new Error('some error message')
app.send({error}) // returns {}
app.send({error: error.message}) // returns {error: 'some error message}
根据MDN文档,错误对象是一个对象,因此我们应该能够将它直接传递给app.send()。这在实践中没有奏效,我希望能够解释原因。谢谢你的帮助!
答案 0 :(得分:2)
我假设app.send
将值转换为JSON。 JSON.stringify
only considers (own) enumerable properties和message
不可枚举:
> Object.getOwnPropertyDescriptor(new Error('foo'), 'message');
Object {value: "foo", writable: true, enumerable: false, configurable: true}