彻底解决 npm 安装 Electron 失败的问题

分析 npm install electron 失败的根本原因(下载二进制超时/被墙),通过国内镜像(npmmirror)彻底解决,并介绍多种备选方案和常见错误排查。

为什么 npm install electron 总是失败

执行 npm install --save-dev electron 经常卡住,最终报错:

npm error code ETIMEDOUT
npm error errno ETIMEDOUT
...
RequestError: connect ETIMEDOUT 185.199.108.133:443

或:

Error: connect ECONNREFUSED 0.0.0.0:443

原因不是 npm 包本身的问题,而是 Electron 的安装脚本会在 npm install 完成后,从 GitHub Releases 下载一个几十到一百多 MB 的二进制压缩包electron-vX.X.X-linux-x64.zipelectron-vX.X.X-win32-x64.zip)。

这个下载地址是:

https://github.com/electron/electron/releases/download/vX.X.X/...

在国内,GitHub Releases 的下载速度极慢甚至完全不可达,导致安装超时失败。

方案一:使用 cnpm(推荐快速解决)

cnpm 是淘宝/阿里维护的 npm 客户端,使用 npmmirror.com 作为源,同时代理了 Electron 的二进制文件:

# 1. 全局安装 cnpm,指向国内镜像
npm install -g cnpm --registry=https://registry.npmmirror.com

# 2. 用 cnpm 安装 Electron
cnpm install --save-dev electron

cnpm 会自动将 Electron 二进制的下载地址替换为 https://npmmirror.com/mirrors/electron/,速度快且稳定。

方案二:配置 ELECTRON_MIRROR 环境变量

不想换 npm 客户端的话,只需告诉 Electron 安装脚本去哪里下载二进制:

# Linux / macOS
export ELECTRON_MIRROR="https://npmmirror.com/mirrors/electron/"
npm install --save-dev electron

# Windows PowerShell
$env:ELECTRON_MIRROR="https://npmmirror.com/mirrors/electron/"
npm install --save-dev electron

# Windows CMD
set ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/
npm install --save-dev electron

或者在项目根目录创建 .npmrc 文件,永久生效:

# .npmrc
electron_mirror=https://npmmirror.com/mirrors/electron/

方案三:全局配置 .npmrc(推荐持久化)

在用户主目录的 ~/.npmrc(或 %USERPROFILE%\.npmrc)中添加:

registry=https://registry.npmmirror.com
electron_mirror=https://npmmirror.com/mirrors/electron/
electron_builder_binaries_mirror=https://npmmirror.com/mirrors/electron-builder-binaries/

之后所有项目的 npm install electron 都会走国内镜像,无需额外操作。

方案四:用 bun 或 pnpm(更现代的方式)

bun 和 pnpm 都内置了更好的网络处理,配合镜像更稳定:

# bun(自动用更快的并发下载)
bun add -d electron
# 配合环境变量
ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ bun add -d electron

# pnpm(同样支持 .npmrc 的 electron_mirror)
pnpm add -D electron

方案五:手动下载后安装

网络实在不稳定时,可以手动下载二进制再安装:

# 1. 查看当前要安装的 Electron 版本
cat node_modules/electron/package.json | grep '"version"'
# 或者先 npm install,让它下载 package,失败后手动补充二进制

# 2. 从 npmmirror 手动下载对应版本的 zip
# https://npmmirror.com/mirrors/electron/v28.2.0/electron-v28.2.0-linux-x64.zip

# 3. 将下载的 zip 放入缓存目录
mkdir -p ~/.electron
cp electron-v28.2.0-linux-x64.zip ~/.electron/

# 4. 设置 ELECTRON_SKIP_BINARY_DOWNLOAD 并重新安装(让脚本直接用缓存)
ELECTRON_SKIP_BINARY_DOWNLOAD=1 npm install --save-dev electron

常见报错速查

报错原因解决方案
ETIMEDOUTGitHub 下载超时配置 ELECTRON_MIRROR
ECONNREFUSED连接被拒绝代理未配置或镜像地址错误
checksum mismatch缓存文件损坏清除 ~/.electron~/.cache/electron 重新下载
Unsupported platform平台/架构不支持检查 Node 和系统架构是否匹配
Permission denied全局安装权限不足sudo 或修复 npm 全局目录权限

验证安装成功

# 检查 electron 是否可执行
./node_modules/.bin/electron --version
# 输出示例:v28.2.0

# 或通过 npx
npx electron --version

延伸:electron-builder 也有类似问题

如果你使用 electron-builder 打包,它也会下载额外的工具链(nsis7za 等)。同样在 .npmrc 中配置:

electron_builder_binaries_mirror=https://npmmirror.com/mirrors/electron-builder-binaries/