gpt4 book ai didi

node.js - 如何更改 NodeJS 中的堆栈大小限制?

转载 作者:行者123 更新时间:2023-12-05 03:28:35 34 4
gpt4 key购买 nike

在我的库(JavaScript 中的方案)中,我有一个应该失败的测试,因为它计算(!1000) 并且在实现 TCO(尾调用优化)时它应该通过。但最近 NodeJS 可能增加了堆栈大小限制,因为测试通过意味着它未能失败。

有没有办法让 NodeJS 中的堆栈大小更小?所以我不需要增加阶乘函数的值来溢出堆栈。

编辑:请注意在 GitHub 上讨论的 --stack-size 选项可能会使 Node 崩溃。我想要一个堆栈溢出错误,但对于小于 1000 的值。

最佳答案

您可以使用 --stack-size V8 选项(另请参阅 here)。

要查看默认大小,您可以检查--v8-options:

$ node --v8-options | grep -B0 -A1 stack-size
--stack-size (default size of stack region v8 is allowed to use (in kBytes))
type: int default: 984

(除了调用和解析 node --v8-options 之外,我不知道以编程方式读取默认值或当前值的任何方法。)

然后您可以使用该选项指定新的堆栈大小:

$ node --stack-size=512 index.js

您也可以使用 v8.setFlagsFromString 从程序本身进行设置:

const v8 = require('v8');
v8.setFlagsFromString('--stack-size=512');

请注意,可用的 V8 选项将来可能会在 node.js 中使用的较新版本的 V8 中发生变化。 (例如,我相信这个选项之前被称为 stack_size 带有下划线,但现在它是 stack-size 带有破折号。)你可以使用 v8flags package如果该选项不再存在,则打包或以编程方式调用 node --v8-options 以引发错误,以便您可以调整测试。

关于node.js - 如何更改 NodeJS 中的堆栈大小限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71237313/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com