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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 20:05:32