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

Linux下Electron Forge Vite打包后无法找到better-sqlite3模块

解决Electron Forge Vite打包deb后找不到better-sqlite3的问题

以下是针对该问题的分步解决方案:

1. 配置Vite主进程外部化原生模块

better-sqlite3作为原生模块,不能被Vite打包进主进程代码,需要保留require调用。在你的vite_configs/vite.main.config.mjs中添加Rollup外部化配置:

export default {
  // 原有配置...
  build: {
    rollupOptions: {
      external: ["better-sqlite3"]
    }
  }
};

2. 确保原生模块被Asar解压

修改forge.config.js的packagerConfig,明确指定better-sqlite3目录不被Asar压缩,而是单独解压:

packagerConfig: {
  asar: true,
  executableName: "babel-gate",
  asarUnpack: [
    "node_modules/better-sqlite3/**/*"
  ]
},

3. 优化原生模块重编译配置

调整forge.config.js的rebuildConfig,强制针对better-sqlite3进行重编译,适配当前Electron版本:

rebuildConfig: {
  force: true,
  modules: ["better-sqlite3"]
},

4. 添加自动重编译脚本

在package.json的scripts中添加postinstall脚本,确保每次安装依赖后自动重编译原生模块:

"scripts": {
  "start": "electron-forge start",
  "package": "electron-forge package",
  "make": "electron-forge make",
  "publish": "electron-forge publish",
  "lint": "echo \"No linting configured\"",
  "postinstall": "electron-rebuild -f -w better-sqlite3"
}

5. 清理缓存后重新构建

执行以下命令彻底清理缓存并重新构建:

rm -rf node_modules package-lock.json
npm install
npm run make

6. 排查Fuses配置冲突(可选)

如果以上步骤无效,暂时注释掉forge.config.js中的FusesPlugin配置,重新打包测试。若问题解决,再逐步调整Fuses选项,确保OnlyLoadAppFromAsar等设置不会限制模块加载。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 14:13:11