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 语言写的?
是啊,sqlite3 是个原生模块。
是啊,所以我放弃使用 sqlite3,改用 nedb 了
在Node.js和Electron环境下使用Sqlite3时,确实可能会遇到因为原生模块编译问题导致的依赖问题。这通常是由于Electron和Node.js的版本不匹配,或者Electron的架构(如x64, arm64)与已编译的Sqlite3模块不兼容所致。
为了解决这个问题,你可以尝试以下几个步骤:
-
确保Electron版本与Node.js版本兼容: Electron通常使用特定版本的Node.js。你可以通过
electron --version
和node --version
查看当前版本,并确保它们兼容。 -
使用
electron-rebuild
:electron-rebuild
是一个工具,用于自动为Electron重新编译原生Node.js模块。你可以通过以下命令安装并使用它:npm install --save-dev electron-rebuild ./node_modules/.bin/electron-rebuild
-
使用
electron-builder
或electron-packager
: 这些工具可以帮助你打包Electron应用,并确保所有依赖都被正确编译和打包。 -
手动删除并重新安装node_modules: 有时候,删除
node_modules
文件夹和package-lock.json
文件,然后重新运行npm install
可以解决问题。 -
确保Electron和Sqlite3的架构一致: 确保你安装的Sqlite3模块是为你的Electron架构(x64, arm64等)编译的。
通过上述步骤,你应该能够解决在Node.js和Electron环境下使用Sqlite3时遇到的模块找不到的问题。如果问题依旧存在,请检查具体的错误日志,以便进一步诊断。