使用mac打包eletron X86时如果遇到
node-gyp does not support cross-compiling native modules from source.
也就是说,node-gyp 不支持跨平台编译 native 模块。 在你的项目里,触发它的模块是通过 electron-rebuild 重新编译依赖的时候:
- 你本地运行环境(Node 版本 + 系统)和 Electron 要编译的目标环境不一致,导致 node-gyp 判定这是「跨编译」。
常见触发场景
-
Node 版本和 Electron 版本 ABI 不一致
- Electron 内置的 Node 版本 ≠ 你本地 Node 版本。比如:你本地 Node 18,但 Electron 内部 Node 可能是 20.
-
平台不一致你在 macOS 上安装,但编译目标是 win32 或 linux。node-gyp 只支持本机编译,不支持直接跨平台。
-
缺少编译工具链
- macOS 没有装 Xcode Command Line Tools。Windows 没有装 windows-build-tools / Visual Studio Build Tools。
1️⃣ 确认终端运行在 Rosetta(x64)模式
-
打开 Finder → 应用 → 实用工具 → Terminal -
右键 → “显示简介” → 勾选 使用 Rosetta 打开 -
打开终端后检查:
uname -m
# 输出应为 x86_64
2️⃣ 安装 x64 Node(使用 nvm)
如果你没有 nvm,先安装 nvm。然后在 Rosetta 终端里:
arch -x86_64 nvm install 18
arch -x86_64 nvm use 18
检查 Node 架构:
node -p "process.arch" # 应该输出 x64
3️⃣ 删除旧依赖 + 清缓存
rm -rf node_modules package-lock.json
npm cache clean --force
4️⃣ 安装依赖(Rosetta 模式)
arch -x86_64 npm install
5️⃣ Electron rebuild(确保 native 模块匹配 Electron ABI)
arch -x86_64 npx electron-rebuild -f -w electron-edge-js
-
•
-f 强制重建 -
•
-w 模块名 指定需要 rebuild 的 native 模块
如果需要重建全部模块:
arch -x86_64 npx electron-rebuild -f
如果安装有问题 或报
Downloading https://formulae.brew.sh/api/formula.jws.json ==> Downloading https://formulae.brew.sh/api/cask.jws.json Error: Cannot install under Rosetta 2 in ARM default prefix (/opt/homebrew)! To rerun under ARM use: arch -arm64 brew install ... To install under x86_64, install Homebrew into /usr/local.
你现在的 Homebrew 装在 /opt/homebrew,这是 arm64 Homebrew。
所以当你用 arch -x86_64 brew install 时,它报错
Error: Cannot install under Rosetta 2 in ARM default prefix (/opt/homebrew)!
安装 x86_64 Homebrew 到 /usr/local
`在 Rosetta 终端下重新装 Homebrew:`
arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
它会自动装到 /usr/local/Homebrew,这是 Intel 版本 Homebrew。
配置环境变量:
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
再装 x64 Node
arch -x86_64 brew install node@18
验证:
arch -x86_64 node -p "process.arch"
# 应输出 x64