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

Electron中better-sqlite3编译遇ABI版本不匹配问题求助

解决方案

优先方案:针对Electron的ABI版本重新编译better-sqlite3

你不需要寻找对应ABI=108的Electron版本,问题根源是你用本地Node.js(v18.9.0,ABI108)编译了better-sqlite3,但Electron运行时依赖内置的Node.js版本(比如Electron20对应Node16.15.0,ABI107),因此需要针对Electron的目标版本重新编译该模块,步骤如下:

  1. 安装electron-rebuild工具(未安装的话):
npm install --save-dev electron-rebuild
  1. 执行定向重新编译,替换20.0.0为你实际使用的Electron版本:
./node_modules/.bin/electron-rebuild -v 20.0.0 -f -w better-sqlite3

也可以在package.json的scripts中添加快捷命令:

"scripts": {
  "rebuild-sqlite": "electron-rebuild -f -w better-sqlite3"
}

之后运行:

npm run rebuild-sqlite
  1. 若需指定自定义sqlite-amalgamation路径,可直接用如下命令编译:
npm install better-sqlite3@latest --build-from-source --sqlite3="$(pwd)/sqlite-amalgamation" --runtime=electron --target=20.0.0 --disturl=https://electronjs.org/headers

注意替换--target后的版本号为你的Electron实际版本。

关于ABI=108的Electron版本

从你提供的ABI对应关系来看,仅Node.js v18.x系列使用ABI108,Electron官方发布的稳定版、测试版中均无采用该ABI的版本——Electron的内置Node版本通常滞后于官方Node稳定版,且不会覆盖所有Node的ABI版本,目前不存在官方发布的ABI=108的Electron版本。

自行编译Electron(不推荐,仅作参考)

若确实需要基于Node.js v18(ABI108)编译Electron,可参考以下步骤:

  • 克隆Electron源码仓库:
git clone https://github.com/electron/electron.git
cd electron
  • 调整Node版本依赖:修改源码中的DEPS文件,将Node的依赖指向v18.x对应的commit;或寻找Electron社区中已适配Node18的分支。
  • 安装编译依赖:根据官方文档配置系统所需的编译工具(如Python、CMake、Git等)。
  • 执行编译:
npm run build

注意:自行编译Electron难度高、耗时久,后续维护成本大,非特殊需求不建议采用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 13:50:21