electron项目中使用sqlite
时间:2025-06-24 15:43:20
关键词: electronsqlite

开发环境: 操作系统:win11 nodejs版本:v20.13.1 electron版本:28.2.0

前言: 前面部分是关于electron项目如何构建开发环境相关的,后面部分是和sqlite有关的。

如果参考本文,要注意electron和nodejs版本。后续对于electron内部的一些功能,比如进程间通信,更新软件等功能,不同的版本可能会有不同的区别,在网上抄各种教程发现不管用,排查不出问题的时候,应该优先考虑是版本不同导致方法不一样的情况。

比如打包失败可能是打包的程序和electron版本不一致导致的。应该说electron大多数时候网上的教程不管用都是因为教程所处的版本和后来者使用的版本不一致造成的。不管是安装配置环境,打包,开发时候遇到的各种问题等。

根据我测试,目前关于electron开发时遇到的问题,都可以结合具体报错内容询问deepseek,kimi等免费公开的AI模型解决问题。

关于electron安装

我自己使用的是vite结合electron构建的项目,这样前端使用vue3,并且整个项目使用了ts

安装和打包electron经常出现各种问题。大部分原因是因为electron项目初始化以及打包过程中都需要安装比较大的文件,即使有加速器的情况下,也容易出问题。

而更换npm源到其它镜像,有时又会出其它各种问题。因此我下面说的各种内容都是以npm为默认源的情况下进行的。

根据我多次部署开发环境测试,如果是针对网络不好导致包无法下载安装的。可以手动替换一些文件。比如我的项目中C:\Users\你自己电脑的用户名\AppData\Local\electron-builder\Cache这个目录下,是electron项目默认需要用到的两个包的位置。你需要根据这个创建对应的目录,估计是

  1. 先在Roaming中创建`electron-builder``目录
  2. electron-builder目录中创建Cache目录
  3. Cache目录中创建nsiswinCodeSign目录
  4. 其中nsis目录中需要有nsis-3.0.4.1nsis-resources-3.4.1目录,里面是对应的相关文件;其中winCodeSign目录中应该有winCodeSign-2.6.0,里面有对应的相关文件
  5. 这些文件可以在这个github链接。或者当你初始化或者打包electron项目的时候,可以看控制台报错和下载包有关的时候,看到上面我提到的相关包的下载地址后,自己去下载,然后放入对应的目录,另外要记得自己下载后是压缩包,需要自己手动解压。
  6. 需要特别注意,根据测试,electron版本:28.2.0,配合我上面说到的文件目录的版本号是有相关性的,任何文件的版本号对不上,都可能造成未知的问题。
  7. 需要补充的是,electron除去网络导致的问题,剩下的很多问题就是版本问题,比如eletron和打包的程序版本不兼容,和本机nodejs版本不兼容。如果无脑使用最新版本,大概率会出错。方案就是网上搜一个现成的electron项目,看它里面的各种依赖版本,然后手动修改自己的项目的。(老旧版本的electron可能存在BUG,建议尽量用新的)

如果一切顺利,通过上面的步骤,就应该可以开发electron项目了。

最后强调一下,当可以运行开发模式下的代码后,一定要先尝试打包正式项目。因为我上面写的nsis目录下的内容,应该是正式项目才会生效。另外有些electron使用ts的情况下,开发环境默认没有对语法进行严格检查,疏忽大意可能导致打包时候过不了语法检测。

关于sqlite

我尝试使用的是better-sqlite3以及typeorm,其中typeorm是用来操作数据库的,具体使用方法可以看官网内容,使用过程可以直接问AI相关,比如如何配置,写个例子等。

下面重点是better-sqlite3的相关问题。

首先直接执行npm i better-sqlite3估计出问题的人很多。这个时候我主要遇到两种情况。

  1. 找不到node-gyp 我全局安装node-gyp后发现还是没效果 ,所以我直接项目目录中npm i node-gyp进行安装,然后解决了问题

  2. 下面的报错是我节选的部分,如果有类似Visual Studio,C+++这类字样的报错,大概率是要下载额外的东西。下载地址是微软开发工具,我不确定具体用法,大概就是node-gyp要调用微软的这个工具,去编译better-sqlite3的相关内容给nodejs用。这个微软工具本身很小,但是下载后打开会下载很大的东西,估计有几个GB大

npm ERR! gyp ERR! find VS could not use PowerShell to find Visual Studio 2017 or newer, try re-running with '--loglevel silly' for more details
npm ERR! gyp ERR! find VS You need to install the latest version of Visual Studio
npm ERR! gyp ERR! find VS including the "Desktop development with C++" workload.
npm ERR! gyp ERR! find VS For more information consult the documentation at:
npm ERR! gyp ERR! find VS https://github.com/nodejs/node-gyp#on-windows GitHub - nodejs/node-gyp: Node.js native addon build tool GitHub - nodejs/node-gyp: Node.js native addon build tool  
  1. 如果前面的一切顺利,当你运行开发模式后,大概率项目可以启动,还会报错。一般是提示better-sqlite3支持的node版本和electron内置的node版本不一致。原因是刚刚编译的版本是基于开发环境电脑中nodejs的版本来的,解决方案是执行npm i electron-rebuild然后执行npx electron-rebuild -v 28.2.0,注意这个版本号要和electron的版本一致。

然后程序会自动把better-sqlite3编译到合适的版本。这个时候启动项目应该就完全没有问题了。

  1. 如果同时使用typeormbetter-sqlite3,很大概率还会遇到一种问题,如下 这是因为typeormbetter-sqlite3的版本不兼容导致的。建议遇到这个问题的情况下,把报错内容交给AI,然后问最合适的版本是什么,然后调整这两个包的版本到AI推荐版本。
NODE_MODULE_VERSION 115. This version of Node.js requires
NODE_MODULE_VERSION 119. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).
    at process.func [as dlopen] (node:electron/js2c/node_init:2:2214)
    at Module._extensions..node (node:internal/modules/cjs/loader:1356:18)
    at Object.func [as .node] (node:electron/js2c/node_init:2:2214)
    at Module.load (node:internal/modules/cjs/loader:1126:32)
    at Module._load (node:internal/modules/cjs/loader:967:12)
    at c._load (node:electron/js2c/node_init:2:13672)
    at Module.require (node:internal/modules/cjs/loader:1150:19)
    at require (node:internal/modules/cjs/helpers:119:18)
    at bindings (E:\project\blanc_electron\node_modules\bindings\bindings.js:112:48)
    at new Database (E:\project\blanc_electron\node_modules\better-sqlite3\lib\database.js:48:64) {

豫ICP备19045658号

豫公网安备41070202001641号

本网站的日文和英文版,使用deepseek翻译而来,如有问题,以中文版内容为准。

本站内容以技术内容,技术展示,和ACG文化相关内容为主,不主动收集、不存储任何用户数据

本网站目前没有任何充值,会员等功能,也没有购买,打赏,捐赠等行为,如果通过付费行为才进入本站,说明你被别人骗了