You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

M1设备编译Intel架构Electron应用遇架构不兼容错误求助

在M1设备编译Intel架构Electron应用时的架构不兼容报错问题

报错信息

node:electron/js2c/renderer_init:73 Error: dlopen(/var/folders/d8/qgbcwv4131s7946ql6ctljt80000gn/T/.com.electron.app.FGco8P, 0x0001): tried: '/var/folders/d8/qgbcwv4131s7946ql6ctljt80000gn/T/.com.electron.app.FGco8P' (mach-o file, but is an incompatible architecture (have (arm64), need (x86_64))), '/private/var/folders/d8/qgbcwv4131s7946ql6ctljt80000gn/T/.com.electron.app.FGco8P' (mach-o file, but is an incompatible architecture (have (arm64), need (x86_64)))
    at process.func [as dlopen] (node:electron/js2c/asar_bundle:5:1810)
    at Module._extensions..node (node:internal/modules/cjs/loader:1205:18)
    at Object.func [as .node] (node:electron/js2c/asar_bundle:5:2037)
    at Module.load (node:internal/modules/cjs/loader:988:32)
    at Module._load (node:internal/modules/cjs/loader:829:12)
    at c._load (node:electron/js2c/asar_bundle:5:13343)
    at i._load (node:electron/js2c/renderer_init:33:356)
    at Module.require (node:internal/modules/cjs/loader:1012:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.<anonymous> (/Applications/App…ajarenderer.js:9:23)

环境信息

  • 依赖版本:
    "devDependencies": {
        "@electron/rebuild": "^3.2.9",
        "electron": "^21.3.1",
        "electron-builder": "^23.6.0",
        "electron-notarize": "^1.2.2"
    },
    
  • Node版本:v18.13.0

问题与已尝试操作

在M1设备上尝试编译适配Intel(x86_64)架构的Electron应用时出现上述架构不兼容错误。已尝试重装npm包、删除并重建package.json,问题仍未解决。请问这是否是zsh或nvm等环境问题?


解答

  1. 不是zsh/nvm的直接问题:核心原因是编译过程中生成的模块为arm64架构,与目标x86_64不匹配,和终端环境(zsh)或版本管理工具(nvm)无直接关联,但需确保编译环境以x86_64模式运行。

  2. 关键解决步骤:

    • 通过Rosetta 2启动终端:右键终端应用→「显示简介」→勾选「使用Rosetta打开」,重启终端后再执行编译命令,让整个终端环境以x86_64兼容模式运行。
    • 指定electron-builder目标架构:在package.json的build配置中明确指定x86_64架构,示例:
      "build": {
        "mac": {
          "target": {
            "target": "default",
            "arch": ["x64"]
          }
        }
      }
      
    • 强制以x64架构重建原生模块:在Rosetta终端中执行:
      npx electron-rebuild --arch=x64
      
    • 验证Node架构:执行node -p process.arch,输出应为x64。如果是arm64,需在Rosetta终端中通过nvm重新安装对应版本:
      nvm install 18.13.0 --arch=x64
      nvm use 18.13.0
      
  3. 额外注意事项:

    • 清理编译缓存:删除node_modules、dist目录以及~/.cache/electron-builder缓存,再重新安装依赖和编译。
    • 确保公证流程正常:打包x86_64应用时,electron-notarize无需额外调整,但需确认Apple开发者账号权限正常。

内容的提问来源于stack exchange,提问作者capybara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 05:52:46