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

Electron打包Windows应用报错:找不到sqlite3模块

解决Electron Windows打包后sqlite3模块找不到的问题

这个问题我之前帮不少开发者踩过坑,核心原因是sqlite3作为原生模块,编译时依赖的Node.js ABI版本和Electron内置的Node版本不匹配,再加上Windows下asar打包的特殊限制,就会出现这种找不到.node文件的错误。结合你说Linux正常、本地启动正常的情况,给你一套靠谱的解决步骤:

步骤1:彻底清理并重新安装sqlite3

先把现有sqlite3卸载干净,避免残留的旧编译文件干扰:

npm uninstall sqlite3
npm cache clean --force

然后重新安装sqlite3:

npm install sqlite3 --save

步骤2:用electron-rebuild重新编译原生模块

Electron自带的Node版本和你本地开发用的可能不一样,必须用electron-rebuild针对Electron的环境重新编译sqlite3:
首先安装依赖(如果还没装的话):

npm install --save-dev electron-rebuild

然后执行重建命令:

  • Windows系统:
.\node_modules\.bin\electron-rebuild.cmd -f -w sqlite3
  • Linux/macOS系统:
./node_modules/.bin/electron-rebuild -f -w sqlite3

这里的-f是强制重建,-w指定只处理sqlite3模块,能节省不少时间。

步骤3:调整打包配置,让原生模块能被正确加载

如果用的是electron-builder,在package.json的build配置里添加asarUnpack,把sqlite3的原生模块目录排除在asar压缩包之外——因为asar里的原生模块加载会有路径解析问题:

"build": {
  "asarUnpack": [
    "node_modules/sqlite3/**/*"
  ]
}

如果用的是electron-packager,打包时加上这个参数:

electron-packager . --asar-unpack="node_modules/sqlite3/**/*"

额外检查:确认knex的sqlite3驱动配置

确保你的knex配置里sqlite3的路径是正确的,比如:

const path = require('path');
const knex = require('knex')({
  client: 'sqlite3',
  connection: {
    filename: path.join(__dirname, './your-db-file.sqlite')
  }
});

这里一定要用path.join来生成绝对路径,避免Windows下的路径分隔符问题。

按这个流程走下来,Windows打包后的应用应该就能正常加载sqlite3了。我之前遇到好几个类似的案例,都是通过这几步解决的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:46:43