有人知道如何在Node.js中打印堆栈跟踪吗?
当前回答
据我所知,在nodejs中打印完整的堆栈跟踪是不可能的,你可以只打印“部分”堆栈跟踪,你无法看到你从代码中的哪里来,只是异常发生的地方。这就是瑞恩·达尔在youtube视频中解释的内容。http://youtu.be/jo_B4LTHi3I为了精确,至少56:30。希望这能有所帮助
其他回答
现在主机上有一个专门的功能:
console.trace()
在v15.12.0中,有各种方法可以做到这一点,
1. console.trace(anything)
2. Error.captureStackTrace(Object)
3. console.log(new Error().stack)
4. Try Catch - Use console.log(e), where `e` is catched by catch block
或者更好地使用 在任何Javascript代码中的stacktracejs
如上所述,您可以简单地使用trace命令:
console.trace("I am here");
但是,如果您遇到这个问题时正在搜索如何记录异常的堆栈跟踪,则可以简单地记录exception对象。
try {
// if something unexpected
throw new Error("Something unexpected has occurred.");
} catch (e) {
console.error(e);
}
它将记录:
错误:发生了意想不到的事情。 at main (c:\Users\Me\Documents\MyApp\app.js:9:15) 在对象。用户(c: \ \我的文档\ \ MyApp \ app.js: 1) 在模块。_compile (module.js 460:26): at Object.Module._extensions. js (module.js:478:10) 在模块。负载(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的结果为undefined。
为了安全起见,你可以使用
console.error(e.stack || e);
它适用于旧版本和新版本的Node.js。
尝试错误。captureStackTrace (constructorOpt targetObject[])。
const myObj = {};
function c() {
// pass
}
function b() {
Error.captureStackTrace(myObj)
c()
}
function a() {
b()
}
a()
console.log(myObj.stack)
函数a和b在错误堆栈中被捕获并存储在myObj中。
您可以使用node-stack-trace模块,这是一个强大的完整模块来跟踪调用堆栈。
推荐文章
- 如何清除所有<div>的内容在一个父<div>?
- 检测用户何时离开网页的最佳方法?
- 当“模糊”事件发生时,我如何才能找到哪个元素的焦点去了*到*?
- 检查已安装的angular-cli版本?
- React不会加载本地图像
- 如何将Blob转换为JavaScript文件
- 在另一个js文件中调用JavaScript函数
- 如何在svg元素中使用z索引?
- 如何求一个数的长度?
- 跨源请求头(CORS)与PHP头
- 如何用Express/Node以编程方式发送404响应?
- parseInt(null, 24) === 23…等等,什么?
- JavaScript变量声明在循环外还是循环内?
- 元素在“for(…in…)”循环中排序
- 在哪里放置JavaScript在HTML文件?