简单介绍
目前使用的是electron-prokit框架整合了antd,react-router进行前端开发,然后包在electron的壳里。主进程可以简单看成BFF(backend for frontend),因为prokit内构的db读写只能存kv数据。满足不了复杂的结构化数据的CRUD,所以需要参考nodejs的技术栈整合typeorm和better-sqlite3进行本地的数据存储与读写。
构建时遇到的坑
- typeorm和better-sqlite3都属于node native 模块,整合到electron中后会有node版本问题,兼容下问题,需要使用electron-rebuild重新构建
- electron-prokit的所有文件都是使用vite编译到目标的cjs文件的,所以启动时报错:typeorm找不到driver的情况。
解决方案
对于1,需要再vite config中做一些修改:
来让vite不处理这两个模块使得能正常调用。
对于2,则需要在执行tyarn后(即npm i
)后自动rebuild一下。这里对package.json进行了一些修改:
-
升级了electron到27,26和better-sqlite3 有不兼容情况,导致应用crash - -
-
添加了两行脚本命令使得yarn or npm在安装完依赖后,自动rebuild
主要还是我懒,不想每次安装后执行.\node_modules\.bin\electron-rebuild.cmd
具体的地址在:https://github.com/nolaurence/testing-standardization