跳转至

环境变量

在不修改代码的情况下控制应用配置和行为。

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

POSIX shell 示例:

$ export ELECTRON_ENABLE_LOGGING=true
$ electron

Windows 控制台示例:

> set ELECTRON_ENABLE_LOGGING=true
> electron

生产变量

以下环境变量主要用于打包后的 Electron 应用在运行时使用。

NODE_OPTIONS

Electron 支持 Node 的 NODE_OPTIONS 的一个子集。大部分选项均受支持,但与 Chromium 使用 BoringSSL 冲突的选项除外。

示例:

export NODE_OPTIONS="--no-warnings --max-old-space-size=2048"

不支持的选项有:

--use-bundled-ca
--force-fips
--enable-fips
--openssl-config
--use-openssl-ca

在打包应用中,NODE_OPTIONS 被明确禁止使用,但以下选项除外:

--max-http-header-size
--http-parser

如果 nodeOptions fuse 被禁用,NODE_OPTIONS 将被忽略。

NODE_EXTRA_CA_CERTS

详细信息请参见 Node.js cli 文档。

export NODE_EXTRA_CA_CERTS=/path/to/cert.pem 

如果 nodeOptions fuse 被禁用,NODE_EXTRA_CA_CERTS 将被忽略。

GOOGLE_API_KEY

Electron 中的地理位置支持需要使用 Google Cloud Platform 的地理位置 Web 服务。要启用此功能,请获取一个 Google API 密钥 ,并在打开任何将发起地理位置请求的浏览器窗口之前,将以下代码放入主进程文件中:

process.env.GOOGLE_API_KEY = 'YOUR_KEY_HERE'

默认情况下,新生成的 Google API 密钥可能不被允许发起地理位置请求。 要为项目启用地理位置 Web 服务,请通过 API 库 启用它。

注意:你需要为与该 API 密钥关联的项目添加一个 计费账户 ,地理位置 Web 服务才能正常工作。

ELECTRON_NO_ASAR

禁用 ASAR 支持。此变量仅在 fork 出的子进程以及设置了 ELECTRON_RUN_AS_NODE 的生成子进程中受支持。

ELECTRON_RUN_AS_NODE

以普通 Node.js 进程启动该进程。

在此模式下,你可以像在运行普通 Node.js 可执行文件时一样,向 Node.js 传递 cli 选项,但以下标志除外:

  • "--openssl-config"
  • "--force-fips"
  • "--use-openssl-ca",
  • "--force-fips"
  • "--enable-fips"

这些标志被禁用,因为 Electron 在构建 Node.js 的 crypto 模块时使用 BoringSSL 而不是 OpenSSL,因此它们无法按设计工作。

如果 runAsNode fuse 被禁用,ELECTRON_RUN_AS_NODE 将被忽略。

ELECTRON_NO_ATTACH_CONSOLE Windows

不附加到当前控制台会话。

ELECTRON_FORCE_WINDOW_MENU_BAR Linux

在 Linux 上不使用全局菜单栏。

ELECTRON_TRASH Linux

设置 Linux 上的回收站实现。默认值为 gio。

选项:

  • gvfs-trash
  • trash-cli
  • kioclient5
  • kioclient

开发变量

以下环境变量主要用于开发和调试目的。

ELECTRON_ENABLE_LOGGING

将 Chromium 的内部日志打印到控制台。

设置此变量等同于在命令行传递 --enable-logging。更多信息,请参见 命令行开关 中的 --enable-logging。

ELECTRON_LOG_FILE

设置 Chromium 内部日志的文件目标。

设置此变量等同于在命令行传递 --log-file。更多信息,请参见 命令行开关 中的 --log-file。

ELECTRON_DEBUG_NOTIFICATIONS

在 macOS 上为 Notification 生命周期添加额外日志,以辅助调试。当创建或激活新的通知时,将显示额外日志。当执行常见操作时也会显示:通知被显示、被忽略、其按钮被点击,或收到回复。

示例输出:

Notification created (com.github.Electron:notification:EAF7B87C-A113-43D7-8E76-F88EC9D73D44)
Notification displayed (com.github.Electron:notification:EAF7B87C-A113-43D7-8E76-F88EC9D73D44)
Notification activated (com.github.Electron:notification:EAF7B87C-A113-43D7-8E76-F88EC9D73D44)
Notification replied to (com.github.Electron:notification:EAF7B87C-A113-43D7-8E76-F88EC9D73D44)

ELECTRON_DEBUG_MSIX_UPDATER

在 Windows 上为 MSIX 更新器操作添加额外日志,以辅助调试。当启动 MSIX 更新操作时,将显示额外日志,包括包更新、包注册和重启注册。这有助于诊断 MSIX 包更新和部署问题。

示例输出:

UpdateMsix called with URI: https://example.com/app.msix
DoUpdateMsix: Starting
Calling AddPackageByUriAsync... URI: https://example.com/app.msix
Update options - deferRegistration: true, developerMode: false, forceShutdown: false, forceTargetShutdown: false, forceUpdateFromAnyVersion: false
Waiting for deployment...
Deployment finished.
MSIX Deployment completed.

ELECTRON_DEBUG_DRAGGABLE_REGIONS Experimental

[!WARNING] 此变量是调试辅助工具,不属于 Electron 的正式 API。它是实验性的,其行为、输出或存在性可能随时在任何版本中更改或移除,且不会提前通知。

可视化并记录每个窗口的可拖拽区域,以帮助调试自定义标题栏。仅当 app.isPackaged 为 false 时生效。

当设置后,Electron 针对每个 WebContents 进行命中测试的区域(由渲染进程计算得出的所有 app-region: drag 矩形的并集减去所有 app-region: no-drag 矩形)会被绘制为悬浮在网页内容上方的半透明红色矩形,最新更新中发生变化的部分会被染成黄色。覆盖层会忽略鼠标事件,并随网页内容移动或调整大小而跟随。它反映的是主进程实际使用的区域,而不是页面中的 CSS,因此在区域从渲染进程传输途中时,它可能会落后于页面;其角落的标记会显示它正在绘制哪一次更新。

每当渲染进程发送一组新的区域、网页内容大小发生变化,以及每隔几秒,都会写入额外的日志,记录针对该区域提供的命中测试摘要。必须启用日志记录,例如通过 ELECTRON_ENABLE_LOGGING,才能显示这些日志。

示例输出:

[draggable-regions] webContents 1: debugging enabled
[draggable-regions] webContents 1: update #1: renderer sent 5 region(s) (1 drag, 4 no-drag); hit-test region computed in 3.2 us: 6 rect(s), bounds 0,0 1200x40
[draggable-regions] webContents 1: contents view bounds changed to 464,245 1280x720, 8.3 ms since previous bounds change; overlay still shows update #1
[draggable-regions] webContents 1: update #2, 16.4 ms since previous update, 7.1 ms after last bounds change to 1280x720: renderer sent 5 region(s) (1 drag, 4 no-drag); hit-test region computed in 2.8 us: 6 rect(s), bounds 0,0 1280x40
[draggable-regions] webContents 1: 143 hit test(s) in the last 2.0 s (37 inside a draggable region), total 41.5 us, avg 0.3 us, max 1.9 us

ELECTRON_LOG_ASAR_READS

当 Electron 从 ASAR 文件读取时,将读取偏移量和文件路径记录到系统 tmpdir。生成的文件可以提供给 ASAR 模块以优化文件顺序。此变量在每个进程启动时读取一次,因此必须在启动 Electron 的环境中设置,而不是在应用自身代码中设置。

ELECTRON_ENABLE_STACK_DUMPING

当 Electron 崩溃时,将堆栈跟踪打印到控制台。

如果已启动 crashReporter,此环境变量将不起作用。

ELECTRON_DEFAULT_ERROR_MODE Windows

当 Electron 崩溃时,显示 Windows 的崩溃对话框。

如果已启动 crashReporter,此环境变量将不起作用。

ELECTRON_OVERRIDE_DIST_PATH

当从 electron 包运行时,此变量会告诉 electron 命令使用指定的 Electron 构建版本,而不是由 npm install 下载的构建版本。用法:

export ELECTRON_OVERRIDE_DIST_PATH=/Users/username/projects/electron/out/Testing

ELECTRON_INSTALL_PLATFORM

手动覆盖 electron 包在安装期间使用的平台。如果你在一个平台(例如 macOS)上,但想下载另一个平台(例如 Windows 或 Linux)的二进制文件,这会很有用。用法:

ELECTRON_INSTALL_PLATFORM=darwin npm install

ELECTRON_INSTALL_ARCH

手动覆盖 electron 包在安装期间使用的架构。如果你在一个架构(例如 arm64)上,但想下载用于另一个架构的二进制文件,这会很有用。请注意,这在 Rosetta 下不起作用。用法:

ELECTRON_INSTALL_ARCH=arm64 npm install

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 el/electron