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

JavaScript

Green猴子

2020-03-12

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

第1208篇《如何在Node.js中打印堆栈跟踪?》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

7个回答
null 2020.03.12

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

Mandy小卤蛋凯 2020.03.12

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

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

  Error.captureStackTrace(err, getStack);

  return err.stack;
}
番长前端 2020.03.12

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

猪猪卡卡西 2020.03.12

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

console.trace()
蛋蛋神乐 2020.03.12

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

Tony神乐 2020.03.12

尝试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

梅JinJin 2020.03.12

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

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

或更简单地说:

console.trace("Here I am!")

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android