节点错误堆栈跟踪未定义

时间:2016-02-17 18:13:03

标签: javascript node.js error-handling stack-overflow

我有一些长时间运行的节点代码,会在一段时间后打印出[RangeError: Maximum call stack size exceeded]错误并继续无限期地执行此操作。

要追踪导致这种情况的递归调用(我无法找到任何递归,我没有使用setTimeoutprocess.nextTick),我这样做了:

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

这捕获了错误,但stack属性为undefined!我尝试抛出自己的错误,stack属性显示预期的堆栈。节点不应该在堆栈溢出错误中有stack吗?如何确定哪些调用导致此问题?

1 个答案:

答案 0 :(得分:0)

您不必在JavaScript中抛出Error对象。这甚至可以是一个字符串。因此,当您的应用崩溃时,您无法依赖stack属性。

根据您的描述,您的应用中存在内存泄漏,您应该尝试查找。网上有很多教程。还有一个模块可以在https://www.npmjs.com/package/memwatch上找到名为memwatch的泄漏。