electron中使用sqlite3

2021-12-27阅读(1024)评论(0)牵着狗狗看MM

苏州实时公交查询

起初用的node-sqlite3,node-sqlite3是原生模块,网上查阅了很多资料,解决了本地编译运行的问题,却卡在了打包。(我本机64位,需要打包32位)。

尝试过vue-cli-plugin-electron-builder 加载原生node模块的方法;electron-rebuild的方法去重新编译等等各种方法都用尽了,还是不行。

大致原因分析了下,打包运行的时候,要获取的是32位的.node文件,在npm上没有对应的32位的sqlite3文件,最早的只有3点几版本的,现在都已经到5.0.2版本了,如果用早期的版本,那又会跟electron版本、node版本不兼容

最终解决方案:用better-sqlite3实现
better-sqlite3自称是性能超过sqlite3,这个我没有去验证。不过这个包的安装及使用说明强于sqlite3,使用起来也很方便,最主要的原因是解决了编译、打包的问题。官网上也有很详细的说明。

electron中使用安装better-sqlite3步骤如下:

1.  全局安装 node-gyp

npm install -g node-gyp

2.  安装 windows-build-tools(此工具可以编译原生.node 文件)

npm install --global windows-build-tools

3. 设置编辑工具的环境变量(注意 msbuild_path 的安装路径)

node版本不同,安装windows-build-tools的工具的路径也不一致,我node版本是v14.15.4,安装完windows-build-tools后的路径及版本如下

npm config set msvs_version 2017
npm config set msbuild_path "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe" //安装完windows-build-tools后看下具体的路径,better-sqlite3官网的此配置文档有误,得按照实际的目录配置

如果其他版本也可能安装的是2019,2019的配置参考如下

npm config set msvs_version 2017
npm config set msbuild_path "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe"

4. 安装剩余的依赖

npm install

vue.config.js中的相关配置也得更改下,因为是用的require方式引用

module.exports = {
    pluginOptions: {
        electronBuilder: {
            externals: ['better-sqlite3'],
        },
    },
}

踩了2天的坑,希望对你有帮助。

 

编译时node版本不一致的报错

如果出现如下报错 was compiled against a different Node.js version using NODE_MODULE_VERSION 83这种错误,原因是electron用的node版本和你电脑的node版本不一致导致的。electron每个版本有对应的node版本,可以参考 abi_version

例如,我用的node版本是14.15.4,对应的abi_version 是83;electron版本是13.6.3,对应的abi_version 是89,那么启动编译的时候,就报了如下错误:

可以通过npm rebuild命令来强制使用electron的node版本,这样构建原生node模块时就能正常编译过了。

–target=13.6.3       当前使用的electron版本

–abi=89                electron版本对应的abi_version

npm rebuild --runtime=electron --disturl=https://atom.io/download/atom-shell --target=13.6.3 --abi=89

rebuild时,提示python报错

RT

重新安装下python即可,我这里是2017对应的python是2版本,打开python官网找到最后一个2版本下载安装后,再重新执行上面的rebuild即可。

赞(1) 打赏
转载请注明来源:Web前端(W3Cways.com) - Web前端学习之路 » electron中使用sqlite3
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏