electron 搭配 sqlite3 数据库之环境安装
发布于 作者:苏南大叔 来源:程序如此灵动~
在electron中使用sqlite3,是个很奇妙的体验。你可以在网页(渲染进程)的js脚本里面,写sql语句,删除和修改数据库。这是传统网页代码,所不能实现的功能。当然,你还可以在主进程里面写这样的sql语句,体会winform一致的感受。是不是听上去不错?不过这里面也是有不少大坑的。

本篇文章将要讲述:在electron中,如何安装sqlite这个module模块。
大前提安装python环境
如果您的系统是mac,可以略过本步骤,因为mac系统自带python。
如果是win,请仔细检测python是否加入系统环境变量,推荐安装2.7版本的python,目前可能更加合适(不过,不排除在未来推荐安装3x系列python的可能性)。
截至到发稿,python@2.7下载地址如下:(注意版本号变化中)
- https://www.python.org/downloads/release/python-2711/
- https://www.python.org/downloads/release/python-2715/

注意事项一
请确认安装了python,并且确认系统可以识别python的路径。请一定要注意,安装的时候,请选择把python加入系统变量path。下面是截图是win下的python安装截图,仅供参考。

无论是使用python的那个版本,安装的时候,都会有个默认没有勾选的『加入系统变量path』的选项的。找到它,然后选择上即可。
注意事项二
下面也可能是个导致编译失败的可能性,本地测试环境(win)里,nodejs也许安装路径放在了program files目录里面,这可能会导致编译命令中的路径出错。这个作为一个补充说明作为备选,就是说nodejs路径里面最好不要出现空格。

win环境下构建相关补充说明
如果您的系统是mac,可以略过本步骤,因为mac系统不用这么麻烦。在windows环境下,rebuild是否成功,还需要特殊设置build-tools。
- 传说中,在
win下,如果想要顺利构建sqlite,还需要安装vs2015。但是苏南大叔的电脑上,本来就安装了vs2015,所以,这点无从验证。如果您要新安装vs2015的话,鉴于其安装所需要的时间过长,基本上至少半天的功夫就废了,您要有较强的心理准备。可以先试试下面的方案,不行的话,再来安装vs2015。 - 另外,江湖传闻:不需要安装
vs2015,仅仅需要执行npm install windows-build-tools -g。苏南大叔,在这之前,也安装过了windows-build-tools。所以,这点上也无从验证。这个插件的安装,还是比较快速的。
方案一:一句话脚本方案
本条命令不分win还是mac,命令都是一致的。但是对于编译结果来说:不同的系统下是不一样的,不能混用,这一点要注意。
cnpm install sqlite3@latest --build-from-source --runtime=electron --target=1.7.9 --dist-url=https://atom.io/download/electron --save此命令就一条,执行不成功,就请自行科学上网。不要使用npm,npm会出错,cnpm才ok。安装成功后,就可以顺利使用sqlite,其实这个过程中,会试图下载sqlite3和你指定版本的electron的prebuild版本,没有发现的话。就会重新build一份合适的版本出来。所以一定要注意,版本号1.7.9的字样,指的是electron的版本号,就是你本地的electron的版本号。请使用下面的脚本,确定这个值!
electron --version如果安装成功,但是执行报错的话,那么原因只有一个:版本号不一致。请检查下面几个位置的版本号是否一致?
electron全局的版本electron --versionelectron本地的版本node_modules/.bin/electron --versionpackage.json中的electron版本号- 构建命令中的
--target=后面的版本号

如果node-pre-gyp报错404的话,不必理会,下一步就会在你的系统中自行编译的。可供下载的成品编译完成版本,不是很全的。因为这可能性数是: sqlite的版本数 x electron的版本数 x 系统版本(mac,win)= N种组合,不存在也是非常有可能的。已有的可供下载的成品版本,可以点击这里查看。
下图是安装完成node_modules文件夹截图,请确认nan和sqlite3这两个快捷方式是存在,否则使用的时候会报错的,请务必确认这一点。

对于安装不成功的情况,请从下面几点来检查。
1:科学上网 + cnpm,不解释。
2:python相关,请查看上面有关python的提示条目。
3:替换参数dist-url,替换方式如下所示:
方案二:三句话脚本方案
本条解决方案和上一条解决方案,任选一个即可。
npm install sqlite3 --save
npm install electron-rebuild --save如果是mac系统的话,执行:
./node_modules/.bin/electron-rebuild如果是win系统的话,执行:
.\node_modules\.bin\electron-rebuild.cmd
题外话
事实上,由于这个sqlite3的环境安装,确实是相当复杂,有大量的读者表示:即使按着本文的操作一步一步做了,也不能正常使用。苏南大叔表示很无奈,本文的步骤,都是苏南大叔亲自实验出来的结果。
下面给出几个链接吧,据说是已经集成好sqlite3的electron,由于苏南大叔还没有试验过,所以暂不表态,仅仅是列出链接而已。
总结
若要取得真经,必要经历劫难。sqlite3数据库的使用,在环境安装这步骤卡住的网友不在少数。本文的环境安装好之后,才能继续后续的文章,研究一下sqlite3在electron的使用方案。
特别是在win环境下,一定要注意:
python2.7是否正确安装?(是否加入了环境变量?安装目录中是否没有空格?)windows-build-tools是否正确安装?rebuild命令中的electron的版本号是否正确设置?
没搞定的同学,也不要灰心,这里多尝试几次,总是会成功的。这个sqlite的构建步骤确实非常困难,很多人都没能正确构建。不过,关键点就上面所述这么多,没有其他的。所以,请多尝试几次吧!
更多有关sqlite的内容,请关注苏南大叔的经验文章。
重头开始
感谢南叔
作者您好,本人尝试集成的时候是报错,尝试用您的方法也是报错同样的错误:
npm install sqlite3 --runtime=electron --target=13.0.0 --dist-url=https://atom.io/download/electron
我详细写了下报错的过程,能否请教下:https://segmentfault.com/q/1010000042003882
我要看隐藏内容
打包后数据库操作都不能用 要怎么处理呢
electron 12.0.0版本卡在了 npm install -s dns 上面
难受
操,为了评论看内容,竟然要翻墙,都是中国人何必相互为难呢?
哥,你访问github也要翻墙么?
入坑
踩坑中.........
方案一的不成功跟vue-cli的版本有关吗
非常感谢
这样不用在安装 vs2015
npm install --global --production windows-build-tools --vs2015
npm config set msvs_version 2015
方案一的不成功跟vue-cli的版本有关吗
我在第三步.\node_modules\.bin\electron-rebuild.cmd的时候报Unable to find electron-prebuilt's version number,这是需要先装好electron吗?
楼主有遇到使用electron-builder后,sqlite没有被打包进去的问题吗?我未打包前一切正常,打包后数据库操作都不能用,反编译后的打包文件,发现在没有我的数据库文件db.js
在.\node_modules\.bin\electron-rebuild.cmd这一步执行出错了,后来我发现在sqlite3底下生成了build.sln,用vs.net2017打开后,自动升级项目,并在vs.net里面直接编译,居然通过啦。
震惊