今天尝试在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