【问题标题】:How to output a deep stack trace in node.js?如何在 node.js 中输出深度堆栈跟踪?
【发布时间】:2012-05-10 17:23:12
【问题描述】:

当发生正常异常时,会输出如下堆栈跟踪:

util.js:38
      case '%s': return String(args[i++]);
                        ^
TypeError: Cannot convert object to primitive value
    at String (unknown source)
    at util.js:38:25
    at String.replace (native)
    at Object.<anonymous> (util.js:35:23)
    at Object.<anonymous> (console.js:25:36)
    at EventEmitter.<anonymous> (/project/src/routines/debug/boot.js:16:21)
    at EventEmitter.emit (/project/node_modules/eventemitter2/lib/eventemitter2.js:319:22)
    at /project/src/bootstrap.js:15:14
    at /project/src/util/routineloader.js:36:11
    at /project/src/util/routineloader.js:47:6

这很有帮助。然后当我在某处执行以下操作时:

process.on('uncaughtException', function(err) {
        console.trace();
        throw err;
    });

我只得到:

Trace: 
    at EventEmitter.<anonymous> (/project/src/routines/debug/exceptions.js:4:17)
    at EventEmitter.emit (events.js:88:20)

这根本没有帮助。

如何让它返回整个堆栈跟踪,就像原来的一样?

【问题讨论】:

标签: javascript debugging node.js stack-trace


【解决方案1】:

你快到了:

process.on('uncaughtException', function(err) {
  console.log(err.stack);
  throw err;
});

function foo() {
  throw new Error("HI. I'm an error.");
}

foo();

/* Prints
Error: HI. I'm an error.
    at foo (/Users/rye/Desktop/test.js:7:9)
    at Object.<anonymous> (/Users/rye/Desktop/test.js:10:1)
    at Module._compile (module.js:441:26)
    at Object..js (module.js:459:10)
    at Module.load (module.js:348:31)
    at Function._load (module.js:308:12)
    at Array.0 (module.js:479:10)
    at EventEmitter._tickCallback (node.js:192:40)
*/

【讨论】:

  • 不要停在这里!如果您需要比默认更深/更长的堆栈跟踪,下面有更好的解决方案。
【解决方案2】:
node --stack_trace_limit=200 your-script.js

【讨论】:

    【解决方案3】:

    我发现当我使用console.log(err)时我得到了正确的结果,所以我查看了api并发现了以下内容:

    var mystring=require('util').inspect(error_object);
    

    你会得到一个字符串形式的堆栈跟踪

    【讨论】:

      猜你喜欢
      • 2012-03-22
      • 1970-01-01
      • 1970-01-01
      • 2014-01-15
      • 2015-05-04
      • 2017-03-08
      • 2012-05-17
      • 2021-02-25
      • 1970-01-01
      相关资源
      最近更新 更多