gpt4 book ai didi

javascript - 使用 Node 运行 GHCJS 程序的变量太多

转载 作者:数据小太阳 更新时间:2023-10-29 05:26:09 24 4
gpt4 key购买 nike

我正在尝试使用 node.js 运行一个使用 GHCJS 构建的程序。但是,我收到以下错误:

SyntaxError: Too many variables declared (only 131071 allowed)
at Module._compile (module.js:439:25)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:906:3
  1. 是否可以增加 Node 中允许的变量数量?
  2. 是否有更好的实用程序来运行允许更多变量的 JS 文件
  3. 有没有可以自动减少变量数量的优化工具?

请注意,这是机器生成的 JS,因此我不想手动完成并减少变量的数量。

欢迎提出任何想法。

最佳答案

一定是一个相当大的程序:)

我遇到了非常旧的 Node 版本 (32k) 的变量限制,但尚未达到新的提高限制。该问题类似于导致动态链接问题的 Windows DLL 符号限制,并且可能同样烦人。

GHCJS 将所​​有生成的代码作为顶级函数和变量发出,以提高效率和简单性(闭包由 STG 实现处理,因此此处不需要嵌套函数)。

该限制仅适用于局部(函数)范围。不幸的是,node.js 使用模块系统,并将所有代码隐式加载到本地范围。

幸运的是,JavaScript 为我们提供了一种在局部范围内声明全局名称的方法,您只需要删除 var 关键字!我认为如果将一行开头的所有 var h$ 替换为 h$,您应该能够运行脚本。

或者,您可以尝试使用 SpiderMonkey JS shell 或在浏览器中运行脚本,但这些会给您带来更有限的环境(无法访问文件系统,无法启动或与其他进程交互)。

如果变量限制仍然是您的问题,请在 https://github.com/ghcjs/ghcjs/issues 开工单所以我们可以尝试找到更永久的解决方案(可能通过调整链接时转换步骤将生成的代码分成多个模块)。

关于javascript - 使用 Node 运行 GHCJS 程序的变量太多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25344259/

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