使用Electron-Forge打包含better-sqlite3的Electron应用出错求助
Electron-Forge打包
npm run make失败解决方案 问题背景
使用Electron-Forge打包Electron应用时,执行npm run make命令报错,项目依赖包含better-sqlite3这类原生Node.js模块,相关配置文件如下:
package.json
{ "dependencies": { "bcryptjs": "^2.4.3", "better-sqlite3": "^8.4.0", "body-parser": "^1.20.2", "connect-flash": "^0.1.1", "electron-squirrel-startup": "^1.0.0", "express": "^4.18.2", "express-session": "^1.17.3", "multer": "^1.4.5-lts.1", "pug": "^3.0.2" }, "devDependencies": { "@electron-forge/cli": "^6.1.1", "@electron-forge/maker-deb": "^6.1.1", "@electron-forge/maker-rpm": "^6.1.1", "@electron-forge/maker-squirrel": "^6.1.1", "@electron-forge/maker-zip": "^6.1.1", "@types/better-sqlite3": "^7.6.4", "electron": "25.1.0" }, "scripts": { "start": "electron-forge start", "package": "electron-forge package", "make": "electron-forge make" }, "name": "dishub-admin", "version": "1.0.0", "main": "app.js", "keywords": [], "author": "Fath Elchaydir Yahya", "license": "ISC", "description": "Aplikasi DISHUB BATOLA" }
forge.config.js
module.exports = { packagerConfig: {}, rebuildConfig: {}, makers: [ { name: '@electron-forge/maker-squirrel', config: {}, }, { name: '@electron-forge/maker-zip', platforms: ['darwin'], }, { name: '@electron-forge/maker-deb', config: {}, }, { name: '@electron-forge/maker-rpm', config: {}, }, ], };
问题原因
报错核心是原生Node.js模块(如better-sqlite3)未针对Electron的Node版本正确编译重建。Electron使用的Node ABI版本与系统本地Node版本不一致,打包时必须重新编译这些模块以适配Electron运行环境。
解决方案
1. 安装electron-rebuild并手动重建
安装专门处理原生模块适配的工具,添加重建脚本并执行:
npm install --save-dev electron-rebuild
修改package.json的scripts字段,添加重建命令:
"scripts": { "start": "electron-forge start", "package": "electron-forge package", "make": "electron-forge make", "rebuild": "electron-rebuild -f -w better-sqlite3" }
执行重建命令,确保模块适配Electron:
npm run rebuild
2. 配置Forge自动重建
修改forge.config.js,指定需要重建的原生模块,让Forge在打包时自动处理:
module.exports = { packagerConfig: {}, rebuildConfig: { force: true, modules: ['better-sqlite3'] }, makers: [ { name: '@electron-forge/maker-squirrel', config: {}, }, { name: '@electron-forge/maker-zip', platforms: ['darwin'], }, { name: '@electron-forge/maker-deb', config: {}, }, { name: '@electron-forge/maker-rpm', config: {}, }, ], };
3. 清理缓存重新安装依赖
清理旧依赖缓存,确保全新安装适配Electron的依赖:
rm -rf node_modules package-lock.json npm install
4. 验证版本兼容性
确认better-sqlite3@8.4.0与Electron 25.1.0兼容,若存在版本冲突,可升级/降级模块:
npm install better-sqlite3@latest
5. 分步执行打包流程
先单独执行打包命令验证无错误,再执行制作安装包命令:
npm run package npm run make
内容的提问来源于stack exchange,提问作者fey_23
相关产品推荐
相关产品推荐

