Node.js 为什么调用newerror()后堆栈未定义

Node.js 为什么调用newerror()后堆栈未定义,node.js,error-handling,visual-studio-code,Node.js,Error Handling,Visual Studio Code,我有一个使用Node.js和Express编写的服务,我遇到了一个问题,错误没有在它们的.stack属性上携带堆栈跟踪,正如人们在VSCode中通过监视窗口查看错误对象时所期望的那样。相反,我的错误对象的堆栈属性是未定义的。另外调用console.error(err)会在调试控制台窗口中输出错误信息,但没有任何堆栈详细信息 我一直在浏览文档,所有迹象都表明调用新错误(“我的消息”)应该创建一个错误对象,该对象的堆栈表示调用堆栈,直到错误对象被实例化为止 我正在Windows 10上使用节点v4.

我有一个使用Node.js和Express编写的服务,我遇到了一个问题,错误没有在它们的
.stack
属性上携带堆栈跟踪,正如人们在VSCode中通过监视窗口查看错误对象时所期望的那样。相反,我的错误对象的堆栈属性是
未定义的
。另外调用
console.error(err)
会在调试控制台窗口中输出错误信息,但没有任何堆栈详细信息

我一直在浏览文档,所有迹象都表明调用
新错误(“我的消息”)
应该创建一个错误对象,该对象的堆栈表示调用堆栈,直到错误对象被实例化为止


我正在Windows 10上使用节点v4.2.2。

在调用
.toString()
时,
错误
对象不会报告堆栈,这是在调用
console.log(err)
时调用的

这是因为

当访问error.stack属性时,将延迟生成表示堆栈跟踪的字符串

要查看完整堆栈(包括错误消息),请直接使用
err.stack

console.log(err.stack)


每当我需要错误消息和堆栈时,我都会在节点代码中执行此操作。

在调用
.toString()
时,
错误对象不会报告堆栈,这是在调用
console.log(err)
时调用的

这是因为

当访问error.stack属性时,将延迟生成表示堆栈跟踪的字符串

要查看完整堆栈(包括错误消息),请直接使用
err.stack

console.log(err.stack)

每当需要错误消息和堆栈时,我都会在节点代码中执行此操作