我有一个使用 Node.js 和 Express 编写的服务,我遇到了一个问题,即错误没有像人们在 VSCode 中的 WATCH 窗口查看错误对象时所期望的那样在其.stack
属性上携带堆栈跟踪。相反,我的错误对象的堆栈属性是undefined
。此外,调用 console.error(err)
会在"调试控制台"窗口中输出错误信息,但没有任何堆栈详细信息。
我一直在查看文档,所有迹象都表明调用new Error("My message")
应该创建一个 Error 对象,该对象具有一个堆栈,该堆栈表示调用堆栈,直到实例化错误对象为止。
我在Windows 10上使用Node v4.2.2。
调用.toString()
Error
对象时,它不会报告堆栈,这就是你console.log(err)
时调用的堆栈。
这是因为在访问 .stack
属性之前不会生成堆栈。
表示堆栈跟踪的字符串是在访问 error.stack 属性时延迟生成的。
要查看完整的堆栈(包括错误消息),请直接使用 err.stack
:
console.log(err.stack)
每当我需要错误消息和堆栈时,我都会在我的节点代码中执行此操作。