gpt4 book ai didi

Node.js - 超出最大调用堆栈大小 - vm.runInNewContext

转载 作者:太空宇宙 更新时间:2023-11-04 01:49:27 25 4
gpt4 key购买 nike

在每次循环迭代(由用户指定)中运行 vm.runInNewContext 中的特定用户代码时,我收到“RangeError:超出最大调用堆栈大小”错误。

我在 StackOverflow 上检查了这个问题(引用 Node.js - Maximum call stack size exceeded ),从那里我发现我们应该将函数调用包装到 setImmediate 或 process.nextTick 中。但是,我的整个项目代码都是 promisified。

任何人都可以在这里提供任何可能的解决方案吗?

谢谢!

最佳答案

超过最大调用堆栈大小几乎总是意味着 JavaScript 代码中存在递归问题,因为 JavaScript 中没有任何其他方式可以消耗大量堆栈。您可以通过在 RangeError 类型的异常上设置断点来定位问题,然后适当调整代码。

我看到您已经解决了这个问题,但是正如您链接到的答案所解释的那样,也有可能在完全 promise 的代码中导致无限递归。如果链中的 promise 实际上不执行任何异步执行,则可能会发生这种情况,在这种情况下,控制永远不会真正返回到事件循环,即使代码看起来是异步的。这时,将调用包装在 setImmediateprocess.nextTick 中会很有用。

关于Node.js - 超出最大调用堆栈大小 - vm.runInNewContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50266407/

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