这与其他有关Node中错误消息的问题不同,该错误消息读取 RangeError:超出最大调用堆栈大小,因为我知道为什么我收到此错误消息。这种情况正在发生,因为我正在递归,实际上已经发生了相当大的反复。
感谢。
答案 0 :(得分:66)
来自node --help
:
node --max-stack-size=val
更新:正如评论所示,即使帮助文本仍列出--max-stack-size
选项,但在节点v0.10.x中,您需要使用--stack-size
。
node --stack-size=val
答案 1 :(得分:9)
在节点版本5和6中,我已经验证了设置最大堆栈大小的选项是“--stack_size”(带下划线):
$ node --v8-options
[...]
--stack_size (default size of stack region v8 is allowed to use (in kBytes))
type: int default: 984
要增加最大堆栈大小,只需发出类似:
的内容$ node --stack_size=1200
如其他人所述,请注意增加此值可能会导致分段错误。对于版本6,我的最大安全值是1361,但在版本5中似乎更高。
从更大的角度来看,增加堆栈大小可能无法解决您的所有问题。在节点中编写递归函数时,最好的策略是将它们写在tail-recursive manner中,因为版本6支持正确的尾调用。这将消除堆栈大小溢出。