最近在客户端开发中需要用带数据库作数据的存储,之前为了图方便,一直都是使用浏览器自带的indexedDb。但毕竟这样也只是一种折中的选择,因此想着把数据切换到sqliteDb中。研究了一番终于搞定。
前提
- better-sqlite3看官网上说是对sqlite3进行了更好的封装,而且github上也有2k个star,所以就选它了!
- github.com/JoshuaWise/…
- electron是基于nodejs的环境进行开发的,而在nodejs中使用better-sqlite3是需要node-gyp重新编译的。
node-gyp环境配置
电脑上安装vs2015以上的版本 我自己电脑上一直用的是vs2017因此我使用vs2017作为本次编译的windowsSdk库。 这里要注意的是,老的gyp版本需要vs2015的库(4.0之前),而更新最新的才支持vs2017以及vs2019。
- 1.安装or更新node-gyp
npm install node-gyp@latest
npm prefix -g | % {npm config set node_gyp "$_\node_modules\node-gyp\bin\node-gyp.js"}
- 2.安装node-gyp
npm install -g node-gyp
- 3.设置VCINSTALLDIR
设置环境变量
VCINSTALLDIR的值为VS目录,比如我的电脑上的VS目录就是
D:\CodeWare\VS2017\VC
- 4.设置gyp vs版本
npm config set msvs_version 2017 --global
node-gyp configure --msvs_version=2017
- 5.执行编译
注意:到这一步只是在nodejs环境中完成了better-sqlite3的编译,但倘若要在electron的环境中使用的话 还需要安装 electron-rebuild 插件
-
6.在目录下执行 ./node_modules/.bin/electron-rebuild 命令
-
7.这时候提示
error MSB8036: �Ҳ��� Windows SDK �汾10.0.17763.0
找不到对应版本的windows sdk,需要在vs2017安装程序中勾选上对应的windows sdk
- 8.npm install的时候提示
python2 相关的问题
安装Python 2.7(v3.x.x不支持),安装后要配置环境变量。成功后执行
npm config set python python2.7
注意:原来项目中,我的electron是4.x版本,nodejs版本是10.2.x。而这个版本的NODE_MODULE_VERSION是 69,而node10版本的是64,因此就导致这样反向rebuild的时候会报错v8错误。
经过一番查阅之后,翻查了一下找到了如下的对应表:
思索一番之后,尝试把node升级到12(72) electron升级到5(70),这样node的版本高于electron的版本,就可以成功rebuild了。 下一章将介绍如何使用 better-sqlite 的API。