Electron.js CLI 参数不会通过 js-flags 传递给 node.js

问题描述 投票:0回答:1

我正在创建一个通过 Electron.js 打包/包装的应用程序,其中包含 Node.js 部分和一些服务以及 React 前端。

  • 平台:Windows 10 prof.
  • 电子版本:19.0.0
  • node.js(嵌入式):16.14.2
  • 铬(嵌入式):102.0.5005.61

我试图让应用程序以更多的堆空间(分配更多的 RAM 内存)启动。但就目前而言,所有的努力都没有奏效。

我尝试过的选项

  • 使用构建电子应用程序将其作为命令行参数传递(例如 myapp.exe --max-old-space-size=4096 或 --js-flags='--max-old-space-size=4096' )
  • 通过创建窗口的 index.js 文件传递它(例如 app.commandLine.appendSwitch('js-flags', '--max-old-space-size=4096'); )
  • 直接通过 process.env 传递它(process.env["max-old-space-size]=4096)

一切似乎都没有任何效果! (参考文献:https://github.com/electron/ Electron/issues/2056https://warpdesign.fr/electron-development-how-to-configure-nodejs-and-runtime-chrome-flags https://www.geeksforgeeks.org/command-line-arguments-in-electronjs/

内存保持固定为2 GB(输出MAX HEAP SIZE(字节):2132773076 ~ 1.99 GB) 另外,当输出 process.env 中的内容时,有一个 NODE_OPTIONS: '--max-old-space-size=4096' ...所以以某种方式它被拾取了??? 但从未应用于嵌入式node.js。

如何强制增加堆空间? 我尝试了所有建议。电子被破坏了吗?还是我仍然做错了什么?

javascript node.js electron
1个回答
0
投票

您尝试设置的

max-old-space-size
配置需要在进程初始化之前设置。通过使用命令行标志或尝试在进程运行时设置 env 变量,该进程已经通过了可以设置空间大小的阶段。

根据 docs(在示例中明确使用

--max-old-space-size
):

某些 Electron 行为由环境变量控制,因为它们的初始化早于命令行标志和应用程序代码。

因此,您唯一的选择是找到一种方法来在打包后为您的电子可执行文件设置环境变量。您使用的任何封装选项(电子锻造、电子构建器等)都可能具有此配置,但您必须梳理相关文档(我粗略地浏览了一下并没有透露您需要什么) ).

如何实现这一点完全取决于您的用例,如果您在 Linux 系统上安装并打算从终端启动,一个选择是使用安装脚本在用户配置文件中设置别名,例如

alias myapp='NODE_OPTIONS="--max-old-space-size=4096" /usr/local/bin/myapp.electron'

类似的方法(将环境变量添加到可执行调用之前)适用于设置桌面图标。

© www.soinside.com 2019 - 2024. All rights reserved.