节点错误堆栈跟踪未定义

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

要追查什么recursion调用导致这(我找不到任何recursion,我没有使用setTimeoutprocess.nextTick ),我做到了这一点:

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

这抓住了错误,但stack属性是undefined ! 我试图抛出自己的错误, stack属性显示预期的堆栈。 节点不应该堆栈溢出错误? 我怎样才能确定哪些呼叫造成这种情况?

你不必在JavaScript中抛出一个Error对象。 这甚至可以是一个string。 所以当你的应用程序崩溃时,你不能依靠定义的stack属性。

从你所描述的你有一个内存泄漏你的应用程序,你应该尝试find。 网上有很多教程。 还有一个模块可以在https://www.npmjs.com/package/memwatch上find一个名为memwatch的漏洞。