3 回答
TA贡献1813条经验 获得超2个赞
任何Error对象都具有stack捕获其构造点的成员。
var stack = new Error().stack
console.log( stack )
或更简单地说:
console.trace("Here I am!")
TA贡献1155条经验 获得超0个赞
正如已经回答的那样,您可以简单地使用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:\ Users \ Me \ Documents \ MyApp \ app.js:17:1
)
位于Object.Module._extensions..js(module.js:478:10 )的Module._compile(module.js:460:26))
在 启动时(node.js
)
在Function.Module.runMain(module.js:501:10)
在Function.Module._load(module.js:310:12 )在Module.load(module.js:355:32):129:16),
位于node.js:814:3
如果您的Node.js版本小于6.0.0,则仅记录Exception对象是不够的。在这种情况下,它将仅打印:
[错误:发生了意外情况。]
对于节点版本<6,使用console.error(e.stack)而不是console.error(e)打印错误消息以及完整的堆栈,就像当前的节点版本一样。
注:如果该异常是因为像字符串创建throw "myException",它无法获取堆栈跟踪和记录e.stack的产量不确定。
为了安全起见,您可以使用
console.error(e.stack || e
TA贡献1891条经验 获得超3个赞
要Error以更易读的方式在控制台中打印stacktrace :
console.log(ex, ex.stack.split("\n"));
结果示例:
[Error] [ 'Error',
' at repl:1:7',
' at REPLServer.self.eval (repl.js:110:21)',
' at Interface.<anonymous> (repl.js:239:12)',
' at Interface.EventEmitter.emit (events.js:95:17)',
' at Interface._onLine (readline.js:202:10)',
' at Interface._line (readline.js:531:8)',
' at Interface._ttyWrite (readline.js:760:14)',
' at ReadStream.onkeypress (readline.js:99:10)',
' at ReadStream.EventEmitter.emit (events.js:98:17)',
' at emitKey (readline.js:1095:12)' ]
添加回答
举报