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

Mac M1下node-sqlite3构建x64版本后仍加载arm64版本如何解决

问题根因

编译出x64版本sqlite3绑定但运行时查找arm64版本,核心原因是本地开发启动时拉起的Electron进程为arm64架构,和编译生成的原生模块架构不匹配。electron-builder指定arch=x64仅控制构建阶段生成的模块架构,不会改变本地开发运行时调用的Electron二进制架构。

修复步骤

按顺序执行以下操作即可解决:

  • 校验当前运行环境架构
    打开终端执行以下三条命令:
    arch
    node -p "process.arch"
    npx electron -p "process.arch"
    
    只要任意一条返回arm64,就说明当前环境没有走Rosetta x64转译,必然会出现架构不匹配错误。
  • 切换终端到x64运行模式
    右键点击你使用的终端(Terminal/iTerm2等)图标,选择「显示简介」,勾选「使用Rosetta打开」,完全退出终端后重新打开。如果不想修改终端全局配置,也可以在终端直接执行下面的命令进入x64 shell环境:
    arch -x86_64 zsh
    
    进入新的shell后重新执行上一步的三条校验命令,确保所有返回值都是x64。

    注意:如果你用nvm管理Node版本,需要重新安装x64架构的对应Node版本,例如使用Node 18的话执行nvm install 18 --arch=x64,切换到该版本后再继续后续操作。

  • 清理旧缓存重新编译原生依赖
    先彻底删除之前的构建残留,避免缓存干扰:
    rm -rf node_modules
    rm -rf ~/.node-gyp
    rm -rf ~/Library/Caches/electron-builder
    npm install
    
    依赖安装完成后,在当前x64 shell下执行重建命令,显式指定架构:
    npx electron-builder install-app-deps --arch x64
    
  • 验证后启动应用
    先单独执行命令确认Electron架构正确:
    npx electron -p "process.arch"
    
    返回x64的话,再执行npm run dev启动应用就不会再报找不到arm64 binding的错误了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 08:31:09