今天尝试在Electron使用Better-sqlite3,遇到了很多坑,主要还是使用sqlite3库时感觉特别不爽才硬刚的
就不多说了,直接进入正题。
安装better-sqlite3需要在Electron运行需要保证Node和Electron的ABI(NODE_MODULE_VERSION)一至;
https://nodejs.org/zh-cn/download/releases/
Node版本对照表;
我使用的nodejs版本为
v12.16.3(ABI为72),
electron为
v9.3.1(ABI为82)
以下是electron官网提供的搭配
第一步,确定安装Python2.x、vs2015或vs2017;
第二步,执行以下代码:
npm install --global windows-build-tools
cnpm install --global windows-build-tools
npm install --global windows-build-tools --vs2015
cnpm install --global windows-build-tools --vs2015
代码中出现npm和cnpm,在install过程中使用npm会比较慢,cnpm则是阿里云定制的npm版本,在国内下载速度较快。通过以下命令安装cnpm:
npm install -g cnpm --registry=https://registry.npm.taobao.org
安装node-gyp
npm install -g node-gyp
安装better-sqlite3:
npm install better-sqlite3
第三步,在项目中调用better-sqlite3:
const DB = require('better-sqlite3');
如果出现以下问题:
was compiled against a different Node.js version using
NODE_MODULE_VERSION XX. This version of Node.js requires
NODE_MODULE_VERSION XX. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).
可以通过以下命令解决:
npm install --save-dev electron-rebuild
.\node_modules\.bin\electron-rebuild -f -w better-sqlite3
如果还是不行,可以试试:
cnpm rebuild --runtime=electron --target=9.3.1 --disturl=https://atom.io/download/atom-shell --abi=64
target为electron版本,精确编译对应abi的版本,过程较慢,耐心等待。
abi版本我尝试过64 和 73 对应electron 9.3.1和10.1.3
如果还是不行,可以在下面留言。
# serve with hot reload at localhost:8080
npm run dev
# build for production with minification
npm run build
# build for production and view the bundle analyzer report
npm run build --report
有关工作原理的详细说明,请查看的和。
电子vue-sqlite3-demo
电子vue-sqlite3-demo
该存储库包含以下领域的示例代码:
创建一个新的BrowserWindow以及如何显示和从摧毁它MainProcess 。
在Electron应用程序中的RendererProcess和MainProcess之间发送数据。
使用IPCRenderer和IPCMain对象。
使用Knex库连接Sqlite3 。
使用Knex库构建和读取查询。
在Electron中的Windows上显示开发工具的快捷方式是MacOS上的Command + Alt + I 。
在RenderProcess和MainProcess之间发送数据时,有两个重要的代码段:
IPCMain和IPCRenderer
BrowserWindow.webContents.send()
WebContents包含窗口的事件等。 IPC表示进程间通信。 这里的想法是事件。 您可以通过将send()方法与
Electron的发布版本和NodeJs的发布版本的NODE_MODULE_VERSION不一致,例如:
我的Electron的发布版本是22,对应的NODE_MODULE_VERSION是108,而NodeJs的版本是18,对应的NODE_MODULE_VERSION是110,而两者都是官方版本,如何解决这个问题?
Vue-ElementUI-Electron-Sqlite3入门
Vue + Electron + Element UI + SQLite入门套件/样板,带有Babel,热重载,测试,整理和内置的工作示例应用程序。这是@iswoter的vue-cli-plugin-electron-builder的一个分支
yarn install
编译和热重装以进行开发
yarn start
编译并最小化生产
yarn build
整理和修复文件
yarn lint
自定义配置
npm install --global windows-build-tools
这里有个点要注意一下,这个工具分版本 vs2015, vs2017, 默认是2017,如果是需要2015版安装时后面加参数
npm install --global windows-build-tools --vs2015
如果不知道当前需要哪个版本,先默认安装,后...
预先安装
一个命令行工具,可以在特定平台上轻松安装针对多个版本的node / iojs的预构建二进制文件。
prebuild-install支持默认情况下从GitHub安装预构建的二进制文件。
将您的package.json安装脚本更改为:
" scripts " : {
" install " : " prebuild-install || node-gyp rebuild "
您需要提供由进行的 。
prebuild-install [options]
--download -d [url] (download prebuilds, no url means github)
--target -t version (version to install for)
--runtime
1.node-gyp rebuild --target=5.0.8 --dist-url=https://npm.taobao.org/mirrors/atom-shell
2.cnpm rebuild --runtime=electron --target=5.0.8 --disturl=https://atom.io/download/atom-s...
但排查后都不是,最后我把main.js里面的代码也全部删除后启动,居然是一样的报错,此时认真看了下报错,看到明显是有个乱码的问题,但明明没有任何中文的东西呀;一个简单的程序启动居然报错了,那就排查原因吧,搜索网上的资料没有一个一样的,大致类似的说的是electron版本和node不一致,还有说是electron的版本问题。后面想到了公司的加密系统问题,因为公司会对改动的文件进行加密,导致了这个问题的出现,我滴乖乖,导致根本没法玩了。
好多次下载基本都无法运行,下面是我成功下载的一个electron包,
完整版electron包:
https://download.csdn.net/download/qq_41614928/12267433
下载后解压到项目的node_modules文件夹内即可!
本包0积分即可下载,若需要积分请联系作者改为0
辅助线程支持(用于大/慢查询)
帮助这个项目保持强大! :flexed_biceps:
每天都有成千上万的开发人员和工程师使用better-sqlite3 。 直到现在,都花了漫长的夜晚和周末来保持这个项目的强大和可靠,没有要求赔偿或资金。 如果您的公司使用better-sqlite3 ,请您的经理考虑支持该项目:
其他图书馆如何比较
选择1行get()
选择100行all()
选择100行iterate() 1比1
插入1行run()
在交易中插入100行
更好的sqlite3
慢11.7倍
慢2.9倍
慢24.4倍
慢2.8倍
慢15.6倍
您可以来验证这些结果。
npm install better-sqlite3
您必须使用Node.js v10.20.1或更高版本
electron-webpack dev运行报错:
Error: The module '\\?\C:\Users\shunyue\Workspace\exam\master\node_modules\better-sqlite3\build\better_sqlite3.node'
was compiled against a different Node.js version usin...
node-gyp是一个用 Node.js 编写的跨平台命令行工具,用于为 Node.js 编译本机插件模块。它包含之前由 Chromium 团队使用的 gyp-next项目的供应副本,扩展以支持 Node.js 原生插件的开发。node-gypnode是跨平台的,那么对于任何的node模块理论也是应该是跨平台的。然而,有些node模块直接或间接使用原生C/C++代码,这些东西要跨平台,就需要使用源码根据实际的操作平台环境进行原生模块编译。
npm install --global windows-build-tools
这里有个点要注意一下,这个工具分版本 vs2015, vs2017, 默认是2017,如果是需要2015版安装时后面加参数
npm install --global windows-build-tools --vs2015