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

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

2020/03/12 17:27:27

您可以使用node-stack-trace模块,它是功能强大的模块,可以跟踪调用堆栈。

Mandy小卤蛋凯2020/03/12 17:27:27

@isaacs答案是正确的,但是我有一个更正确的答案。这个答案受到节点js上Console类的原始源代码的启发(源代码):

function getStack() {
  var err = new Error();

  Error.captureStackTrace(err, getStack);

  return err.stack;
}
番长前端2020/03/12 17:27:27

对于我所知无法在nodejs中打印完整的堆栈跟踪信息,您只能打印“部分”堆栈跟踪信息,您无法从代码中看到来源,也无法看到异常发生的地方。这就是Ryan Dahl在此youtube视频中解释的内容。http://youtu.be/jo_B4LTHi3I ,精确时间为56:30。希望这可以帮助

猪猪卡卡西2020/03/12 17:27:27

现在控制台上有一个专用功能

console.trace()
蛋蛋神乐2020/03/12 17:27:27

使用现成的Node模块,可以从Node获得全长堆栈跟踪(尽管会降低性能):http : //www.mattinsler.com/post/26396305882/announcing-longjohn-long-stack -traces-for-node-js

Tony神乐2020/03/12 17:27:27

尝试Error.captureStackTrace(targetObject [,constructorOpt])

const myObj = {};
function c() {
  // pass
}

function b() {
    Error.captureStackTrace(myObj)
    c()
} 

function a() {
    b()
}

a()

console.log(myObj.stack)

函数ab被捕获在错误堆栈中并存储在中myObj

梅JinJin2020/03/12 17:27:27

任何Error对象都具有stack捕获其构造点成员。

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

或更简单地说:

console.trace("Here I am!")