我有一些长时间运行的Node代码,会在一段时间后打印出[RangeError: Maximum call stack size exceeded]
错误,并且会无限制地持续下去。
为了追踪是哪个递归调用导致了这个错误(我找不到任何递归调用使用了setTimeout
或process.nextTick
以外的东西),我做了以下操作:
process.on('uncaughtException', function(error) {
console.log(error);
console.log(error.stack);
});
这捕获了错误,但是stack
属性是undefined
!我尝试抛出自己的错误,stack
属性显示了预期的堆栈。Node在堆栈溢出错误中不应该有一个stack
吗?我如何确定哪些调用引起了这个问题?
console.trace
产生的信息更有意义吗? - Wexconsole.log(error.stack || error)
... 如果error
参数的类型是Error
,它将打印堆栈... 如果它的类型是String
,它将简单地打印消息... - user2879704