07 · 环境变量速查
目标:一网打尽影响 Electron 的环境变量——安装下载、运行时行为、调试日志三大类。 官方对应:环境变量、安装指南
Electron 的很多行为由环境变量控制,因为它们比命令行参数和代码更早初始化。设置方式:
# POSIX
export ELECTRON_ENABLE_LOGGING=true
electron .
# Windows
set ELECTRON_ENABLE_LOGGING=true
electron .一、安装 / 下载相关(@electron/get,国内最常用)
| 变量 | 作用 | 示例 |
|---|---|---|
ELECTRON_MIRROR | 二进制下载镜像基础路径 | https://npmmirror.com/mirrors/electron/ |
ELECTRON_CUSTOM_DIR | 镜像内的子目录模板,默认 {{ version }} | v{{ version }}(镜像保留了 v 前缀时) |
ELECTRON_CUSTOM_FILENAME | 完全自定义文件名模板 | 自建镜像命名规范不同时用 |
ELECTRON_CACHE | electron 包 postinstall 的下载缓存目录(见下方「下载缓存」) | 磁盘紧张或换缓存盘时改 |
ELECTRON_GET_USE_PROXY | 走系统代理(HTTPS_PROXY/HTTP_PROXY)下载 | true |
ELECTRON_GET_HEADERS | 下载时附加自定义请求头(JSON) | 私有镜像鉴权 |
ELECTRON_BUILDER_BINARIES_MIRROR | electron-builder 辅助二进制镜像(nsis、winCodeSign 等) | https://npmmirror.com/mirrors/electron-builder-binaries/ |
ELECTRON_BUILDER_CACHE | electron-builder 的下载缓存目录(Electron 发行版 + 辅助二进制) | 见下方「下载缓存」 |
ELECTRON_INSTALL_PLATFORM | 安装时手动指定目标平台 | ELECTRON_INSTALL_PLATFORM=win32 npm install(mac 上装 Windows 二进制) |
ELECTRON_INSTALL_ARCH | 安装时手动指定架构 | ELECTRON_INSTALL_ARCH=arm64 npm install(Rosetta 下无效) |
这些变量在 .npmrc 里也可写小写蛇形形式(如 electron_mirror=...),npm 会自动注入为 npm_config_electron_mirror——但注意两点:
- 只有经 npm script 执行时才注入,直接跑
electron .不会(见 01-quick-start 常见坑) - npm 11+ 已警告该机制将在下一个大版本移除(
Unknown project config "electron_mirror"),长期建议直接用 shell 环境变量ELECTRON_MIRROR=...
下载缓存(两层,均为用户级目录,跨项目/跨构建复用)
| 下载内容 | Windows | macOS | Linux | 覆盖变量 |
|---|---|---|---|---|
electron 包 postinstall 下载的 electron.zip | %LOCALAPPDATA%\electron\Cache | ~/Library/Caches/electron | ~/.cache/electron | ELECTRON_CACHE |
| electron-builder 拉取的 Electron 发行版 + winCodeSign/NSIS 等 | %LOCALAPPDATA%\electron-builder\Cache | ~/Library/Caches/electron-builder | ~/.cache/electron-builder | ELECTRON_BUILDER_CACHE |
要点:
- 两层缓存相互独立:
npm install electron命中第一层,electron-builder打包命中第二层 - 缓存命中时不再下载,同版本多项目共享,是 CI 加速的关键(缓存这两个目录)
- 下载损坏/换镜像后不生效时,先删对应缓存目录再重装
二、生产 / 运行时行为
| 变量 | 平台 | 作用 |
|---|---|---|
NODE_OPTIONS | 全 | 透传 Node CLI 参数(--max-old-space-size=2048 等)。打包后的应用大部分选项被禁用,仅 --max-http-header-size、--http-parser 可用;与 BoringSSL 冲突的 OpenSSL 类选项永远不支持。若关闭了 nodeOptions Fuse 则完全忽略 |
NODE_EXTRA_CA_CERTS | 全 | 追加自定义 CA 证书(企业内网 HTTPS 证书场景);同样受 nodeOptions Fuse 控制 |
GOOGLE_API_KEY | 全 | 地理定位功能必需的 Google API key;也可在主进程里 process.env.GOOGLE_API_KEY = ...,需在打开窗口前设置 |
ELECTRON_RUN_AS_NODE | 全 | 把 Electron 二进制当普通 Node 进程跑。⚠️ 安全敏感,可被利用执行任意命令,生产建议关 runAsNode Fuse |
ELECTRON_NO_ASAR | 全 | 禁用 ASAR;仅在 ELECTRON_RUN_AS_NODE 的派生子进程中生效 |
ELECTRON_NO_ATTACH_CONSOLE | Windows | 不附加到当前控制台会话 |
ELECTRON_FORCE_WINDOW_MENU_BAR | Linux | 不用全局菜单栏,改用窗口内菜单栏 |
ELECTRON_TRASH | Linux | 选择回收站实现:gio(默认)/ gvfs-trash / trash-cli / kioclient5 / kioclient |
ELECTRON_OVERRIDE_DIST_PATH | 全 | 让 electron 命令用本地构建的 Electron(自编译场景),替代 npm 下载的版本 |
三、开发 / 调试 / 日志
| 变量 | 平台 | 作用 |
|---|---|---|
ELECTRON_ENABLE_LOGGING | 全 | 把 Chromium 内部日志打到控制台(等同 --enable-logging) |
ELECTRON_LOG_FILE | 全 | Chromium 内部日志写入指定文件(等同 --log-file) |
ELECTRON_ENABLE_STACK_DUMPING | 全 | 崩溃时把堆栈打到控制台;crashReporter 启动后失效 |
ELECTRON_DEFAULT_ERROR_MODE | Windows | 崩溃时显示 Windows 原生崩溃对话框;crashReporter 启动后失效 |
ELECTRON_DEBUG_NOTIFICATIONS | macOS | Notification 生命周期详细日志(创建/显示/激活/回复) |
ELECTRON_DEBUG_MSIX_UPDATER | Windows | MSIX 更新流程详细日志 |
ELECTRON_LOG_ASAR_READS | 全 | 记录 ASAR 读取的偏移与路径到系统 tmpdir,用于优化打包文件排序 |
四、安全警告开关(非官方清单,但常用)
| 变量 | 作用 |
|---|---|
ELECTRON_ENABLE_SECURITY_WARNINGS | 强制开启控制台安全警告(默认仅未打包的 electron 二进制显示) |
ELECTRON_DISABLE_SECURITY_WARNINGS | 强制关闭(打包后的应用也会显示警告时用于压制) |
来源:安全文档「Electron 安全警告」节,可设在 process.env 或 window 上。
国内环境典型组合
开发机(.npmrc + shell 二选一,.npmrc 团队共享更好):
# .npmrc
electron_mirror=https://npmmirror.com/mirrors/electron/
electron_builder_binaries_mirror=https://npmmirror.com/mirrors/electron-builder-binaries/
# 或 shell 直接给(不经 npm 时,如手动跑 install.js / electron .)
export ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/
export ELECTRON_BUILDER_BINARIES_MIRROR=https://npmmirror.com/mirrors/electron-builder-binaries/企业内网证书 + 代理:
export NODE_EXTRA_CA_CERTS=/path/to/corp-ca.pem
export ELECTRON_GET_USE_PROXY=true # 走 HTTPS_PROXY 下载二进制相关
- 01-quick-start — 国内镜像配置与常见坑
- 06-security-performance — Fuse 与 NODE_OPTIONS/RUN_AS_NODE 的安全关系