我有一个服务,我用Node.js和Express编写,我遇到了一个错误没有在.stack
属性上进行堆栈跟踪的问题,正如人们所期望的那样通过VSCode中的 WATCH 窗口查看错误对象时。相反,我的错误对象的堆栈属性是undefined
。另外,调用console.error(err)
会在 DEBUG CONSOLE 窗口中输出错误信息,但不会有任何堆栈详细信息。
我一直在查看文档,所有迹象都表明调用new Error("My message")
应该创建一个Error对象,该对象具有一个堆栈,表示调用堆栈直到错误对象被实例化的位置。
我在Windows 10上使用 Node v4.2.2 。
答案 0 :(得分:2)
当Error
对象在其上调用.toString()
时,它不会报告堆栈,这就是console.log(err)
时调用的内容。
这是因为the stack isn't generated until the .stack
attribute is accessed。
访问error.stack属性时,会延迟生成表示堆栈跟踪的字符串。
要查看完整堆栈(包括错误消息),请直接使用err.stack
:
console.log(err.stack)
我需要错误消息和堆栈时,在我的节点代码中执行此操作。