一个node.js堆栈错误超过10行?

有没有办法获得超过10行node.js堆栈错误?

function a() { dieInHell(); } function b() { a(); } function c() { b(); } function d() { c(); } function e() { d(); } function f() { e(); } function g() { f(); } function h() { g(); } function i() { h(); } function j() { i(); } function k() { j(); } function l() { k(); } function m() { l(); } function n() { m(); } function o() { n(); } function p() { o(); } function q() { p(); } try { q(); } catch(e) { console.log(e.stack); } 

显示:

 $ node debug.js ReferenceError: dieInHell is not defined at a (/Users/julien/tmp/debug.js:2:5) at b (/Users/julien/tmp/debug.js:6:5) at c (/Users/julien/tmp/debug.js:10:5) at d (/Users/julien/tmp/debug.js:14:5) at e (/Users/julien/tmp/debug.js:18:5) at f (/Users/julien/tmp/debug.js:22:5) at g (/Users/julien/tmp/debug.js:26:5) at h (/Users/julien/tmp/debug.js:30:5) at i (/Users/julien/tmp/debug.js:34:5) at j (/Users/julien/tmp/debug.js:38:5) 

有10个以上的电话吗?

最简单的解决scheme是用以下代码启动代码:

 Error.stackTraceLimit = Infinity; 

如果你想看到跨越setTimeout / setInterval调用的堆栈跟踪,那么更复杂的https://github.com/mattinsler/longjohn就是要走的路。;

您可以将堆栈跟踪限制作为命令行parameter passing给node

node --stack-trace-limit=1000 debug.js //默认10

顺便说一句,这听起来不太可能发生的另一件事情,但只是浪费了几个小时的时间来debugging,是堆栈大小(默认为492 kB) 。 如果堆栈耗尽( RangeError没有任何附加信息),可能会产生非信息错误。 您可以通过以下方式增加堆栈大小

node --stack-size=1024 debug.js默认492

在callbackcallbackcallback链接的世界中,如果程序没有写在这里,实际上很容易超过大input大小的堆栈大小。

要查看所有堆栈相关的选项:

node --v8-options | grep -B0 -A1 stack