如何在Node.js中打印堆栈跟踪?

有谁知道如何在Node.js中打印堆栈跟踪?


任何Error对象都有一个stack成员,用于捕获构建它的点。

var stack = new Error().stack
console.log( stack )

或者更简单:

console.trace("Here I am!")

现在在控制台上有一个专门的功能:

console.trace()

正如已经回答的那样,您可以简单地使用trace命令:

console.trace("I am here");

但是, 如果您遇到了这个问题,并且正在搜索如何记录异常的堆栈跟踪 ,则可以简单地记录Exception对象。

try {  
  // if something unexpected
  throw new Error("Something unexpected has occurred.");     

} catch (e) {
  console.error(e);
}

它会记录:

错误:发生意外事件。
在主(c: Users Me Documents MyApp app.js:9:15)
在对象。 (C:用户我文件 MyApp的 app.js:17:1)
在Module._compile(module.js:460:26)
在Object.Module._extensions..js(module.js:478:10)
在Module.load(module.js:355:32)
在Function.Module._load(module.js:310:12)
在Function.Module.runMain(module.js:501:10)
在启动时(node.js:129:16)
在node.js:814:3


如果您的Node.js版本<6.0.0 ,那么记录Exception对象将不够。 在这种情况下,它只会打印:

[错误:发生了意外事件。]

对于Node版本<6,使用console.error(e.stack)而不是console.error(e)打印错误消息加上完整的堆栈,就像当前的Node版本一样。


注意:如果异常被创建为类似throw "myException"的字符串,则无法检索堆栈跟踪,并且记录e.stack产量未定义

为了安全起见,你可以使用

console.error(e.stack || e);

它将适用于新旧的Node.js版本。

链接地址: http://www.djcxy.com/p/14467.html

上一篇: How to print a stack trace in Node.js?

下一篇: How can I convert a stack trace to a string?