Nodejs Electron 环境下装了 Sqlite3 后,每次再装新的包都提示 Sqlite3 找不到模块,要重新编译 Sqlite3 才行

Nodejs Electron 环境下装了 Sqlite3 后,每次再装新的包都提示 Sqlite3 找不到模块,要重新编译 Sqlite3 才行
Electron 下,用了 Sqlite3,从此每次安装了新的包打开 Electron 都提示 Cannot find module… node_sqlite3.node
用./node_modules/.bin/electron-rebuild -w sqlite3 -p 重新编译才行。。
编译起来比较费事啊,每次编译都要至少一分多钟。。
另外问一句为什么 Electron 要重新编译模块呢?难道 Sqlite3 模块是 C 语言写的?


3 回复

是啊,sqlite3 是个原生模块。


是啊,所以我放弃使用 sqlite3,改用 nedb 了

在Node.js和Electron环境下使用Sqlite3时,确实可能会遇到因为原生模块编译问题导致的依赖问题。这通常是由于Electron和Node.js的版本不匹配,或者Electron的架构(如x64, arm64)与已编译的Sqlite3模块不兼容所致。

为了解决这个问题,你可以尝试以下几个步骤:

  1. 确保Electron版本与Node.js版本兼容: Electron通常使用特定版本的Node.js。你可以通过electron --versionnode --version查看当前版本,并确保它们兼容。

  2. 使用electron-rebuildelectron-rebuild是一个工具,用于自动为Electron重新编译原生Node.js模块。你可以通过以下命令安装并使用它:

    npm install --save-dev electron-rebuild
    ./node_modules/.bin/electron-rebuild
    
  3. 使用electron-builderelectron-packager: 这些工具可以帮助你打包Electron应用,并确保所有依赖都被正确编译和打包。

  4. 手动删除并重新安装node_modules: 有时候,删除node_modules文件夹和package-lock.json文件,然后重新运行npm install可以解决问题。

  5. 确保Electron和Sqlite3的架构一致: 确保你安装的Sqlite3模块是为你的Electron架构(x64, arm64等)编译的。

通过上述步骤,你应该能够解决在Node.js和Electron环境下使用Sqlite3时遇到的模块找不到的问题。如果问题依旧存在,请检查具体的错误日志,以便进一步诊断。

回到顶部