跳转到主内容

安装指导

要安装预编译的 Electron 二进制文件,请使用 npm。 首选方法是在你的应用程序中安装 Electron 作为开发依赖:

npm install electron --save-dev

参阅 Electron 版本管理文档以获取如何在你的应用里管理 Electron 版本的信息。

Binary download step

在底层, Electron 的 JavaScript API 绑定了包含默认实现的二进制文件。 This binary is crucial to the function of any Electron app, and is downloaded by default the first time you run Electron in development mode (i.e. electron .).

If you want to install the binary on demand instead, you can run the install-electron bin script included in the electron package:

npx install-electron --no

Installing prereleases

Electron distributes experimental releases of future major versions via npm as well.

Nightly builds contain the latest changes from the main branch:

npm install electron-nightly --save-dev

Alpha and beta builds contain changes slated for the next major version:

npm install electron@alpha --save-dev
npm install electron@beta --save-dev

[!TIP] For more information on available Electron releases, see the Release Status dashboard.

运行 Electron ad-hoc

如果你不想在本地工程上使用 npm install 同时又没用其它选择时,你也可以使用 npm 捆绑的 npx 命令来运行 Electron ad-hoc:

npx electron .

上面的命令会在当前工作目录下运行Electron。 需要注意的是,你的应用中的任何依赖将不会被安装。

自定义

If you want to change the architecture that is downloaded (e.g., x64 on an arm64 machine), you can set the ELECTRON_INSTALL_ARCH environment variable:

# Inside an npm script or with npx
ELECTRON_INSTALL_ARCH=x64 electron .

Supported architectures are a subset of Node.js process.arch values, and include:

  • x64 (Intel Mac and 64-bit Windows)
  • ia32 (32-bit Windows)
  • arm64 (Apple silicon, Windows on ARM, ARM64 Linux)
  • arm (32-bit ARM)

此外, 您还可以使用 --platform 来指定开发平台 (例如, win32linux 等):

# Inside an npm script or with npx
ELECTRON_INSTALL_PLATFORM=mas electron .

Supported platforms are Node-like platform strings:

[!TIP] To see all available platform/architecture combinations for a particular release, see the artifacts on Electron's GitHub Releases.

代理

如果您需要使用 HTTP 代理,您需要设置 ELECTRON_GET_USE_PROXY 变量为 任何值。 附加额外的环境变量,取决于您的主机系统Node版本:

Custom mirrors and caches

在安装过程中,electron 模块会通过 electron-download 为您的平台下载 Electron 的预编译二进制文件。 这将通过访问 GitHub 的发布下载页面来完成 (https://github.com/electron/electron/releases/tag/v$VERSION, 这里的 $VERSION 是 Electron 的确切版本).

如果您无法访问GitHub,或者您需要提供自定义构建,则可以通过提供镜像或现有的缓存目录来实现。

镜像

您可以使用环境变量来覆盖基本 URL,查找 Electron 二进制文件的路径以及二进制文件名。 electron/get 使用的网址组成如下:

url = ELECTRON_MIRROR + ELECTRON_CUSTOM_DIR + '/' + ELECTRON_CUSTOM_FILENAME

例如,使用一个中国的镜像:

ELECTRON_MIRROR="https://npmmirror.com/mirrors/electron/"

默认情况下,ELECTRON_CUSTTOM_DIR被设置为 v$VERSION。 要更改格式,请使用 {{ version }} 占位符。 例如,version-{{ version }} 被解析为 version-5.0.0, {{ version }} 被解析为 5.0.0v{{ version }} 与默认值等价。 更具体的例子,使用中国非CDN镜像:

ELECTRON_MIRROR="https://npmmirror.com/mirrors/electron/"
ELECTRON_CUSTOM_DIR="{{ version }}"

上述配置将从类似于 https://npmmirror.com/mirrors/electron/8.0.0/electron-v8.0.0-linux-x64.zip 这样的网址下载。

如果你的镜像提供文件的校验和与 Electron 官方发布版本不同,你可能必须直接设置 electron_use_remote_checksums=1 ,或者在 .npmrc 文件里加入这一条配置,这样能强制 Electron 使用远程提供的 SHASUMS256.txt 文件来验证校验和而不是使用内嵌的校验和。

缓存

或者,您可以覆盖本地缓存。 electron-download 会将下载的二进制文件缓存在本地目录中,不会增加网络负担。 您可以使用该缓存文件夹来提供 Electron 的定制版本,或者避免进行网络连接。

  • Linux: $XDG_CACHE_HOME or ~/.cache/electron/
  • macOS: ~/Library/Caches/electron/
  • Windows: $LOCALAPPDATA/electron/Cache or ~/AppData/Local/electron/Cache/

在使用旧版本 Electron 的环境中,您也可以在~/.electron中找到缓存。

您也可以通过提供一个 electron_config_cache 环境变量来覆盖本地缓存位置。

缓存中包含了不同版本的官方 zip 文件以及校验信息,以 [checksum]/[filename] 格式存储。 典型的缓存可能看起来像这样:

├── a91b089b5dc5b1279966511344b805ec84869b6cd60af44f800b363bba25b915
│ └── electron-v15.3.1-darwin-x64.zip

故障排查

在运行 npm install electron 时,有些用户会偶尔遇到安装问题。

在大多数情况下,这些错误都是由网络问题导致,而不是因为 electron npm 包的问题。 如 ELIFECYCLEEAI_AGAINECONNRESETETIMEDOUT 等错误都是此类网络问题的标志。 最佳的解决方法是尝试切换网络,或是稍后再尝试安装。

如果通过 npm 安装失败,你也可以尝试通过从 electron/electron/release 直接下载 Electron

如果安装失败并报错EACCESS,您可能需要修复npm权限

如果上述报错持续出现,unsafe-perm 标志可能需要被设置为 true:

sudo npm install electron --unsafe-perm=true

在较慢的网络上, 最好使用 --verbose 标志来显示下载进度:

npm install --verbose electron

如果需要强制重新下载文件, 并且 SHASUM 文件将 force_no_cache 环境变量设置为 true