在Node中获取整个堆栈跟踪

时间:2019-07-30 22:15:29

标签: javascript node.js

是否可以在Node中获取整个堆栈跟踪?以下脚本应打印100个项目,但只能打印10个项目。请注意,它确实可以在Chrome中工作,而在Node中却不能。 (要运行下面的代码片段并查看结果,您实际上需要打开浏览器的开发工具。)

function trace(depth = 100) {
  if (!depth) {
    console.trace();
  } else {
    trace(depth - 1);
  }
}

trace();

我也尝试了new Error().stack方法,但这会打印相同数量的行。与stack.trace()不同,此方法还只能在Chrome中显示10个项目。

function trace(depth = 100) {
  if (!depth) {
    console.info(new Error().stack);
  } else {
    trace(depth - 1);
  }
}

trace();

调试器知道整个堆栈跟踪,更不用说JS引擎本身需要能够遍历堆栈进行关闭,因此必须有一种方法。

1 个答案:

答案 0 :(得分:5)

在您的代码中,您需要声明:

Error.stackTraceLimit = Infinity;

这对OP中的两种方法都适用。