Mac M4环境下用Docker构建Windows版Electron应用报错求助
在Mac M4上通过Docker构建Windows版Electron应用解决mono断言错误
错误原因
这个offset == (gint32)offset断言错误,是由于Mac M4的arm64架构通过Docker模拟amd64环境时,electronuserland/builder:wine-mono镜像内的mono版本与架构模拟层不兼容导致的。
解决方案
方案一:更换镜像并使用electron-builder构建(推荐)
electron-builder在Docker跨平台构建场景下兼容性更成熟,操作步骤如下:
- 替换Docker镜像:使用
electronuserland/builder:latest替代wine-mono镜像,该镜像自带完整的wine、node.js及构建依赖 - 执行构建命令:
docker run --rm -it --platform linux/amd64 -v /Users/me/Code/desktop_app/app:/project electronuserland/builder:latest /bin/bash -c "npm install && npx electron-builder --win --x64"- 若本地已安装依赖,可跳过
npm install,但跨架构环境下重新安装依赖能避免潜在的架构不兼容问题
- 若本地已安装依赖,可跳过
- (可选)在
package.json中配置构建脚本,简化后续操作:
在package.json中添加以下内容:
之后构建命令可简化为:{ "scripts": { "build:win": "electron-builder --win --x64" }, "build": { "appId": "com.yourcompany.yourapp", "win": { "target": "nsis" } } }docker run --rm -it --platform linux/amd64 -v /Users/me/Code/desktop_app/app:/project electronuserland/builder:latest /bin/bash -c "npm install && npm run build:win"
方案二:坚持使用Electron Forge的替代方案
如果必须使用Electron Forge,可尝试手动在兼容的amd64镜像中搭建环境:
- 启动Ubuntu 22.04镜像:
docker run --rm -it --platform linux/amd64 ubuntu:22.04 - 在容器内安装依赖:
apt update && apt install -y wine64 nodejs npm npm install -g @electron-forge/cli - 进入项目目录,执行构建:
cd /project npm install npx electron-forge make --platform=win32 --arch=x64
内容的提问来源于stack exchange,提问作者skunkwerk
相关产品推荐
相关产品推荐

