项目问题总结
更新api¶
当前的问题是: 构建过程中出现了无法 require 错误,根据 https://stackoverflow.com/questions/77421447/how-to-solve-require-is-not-defined-in-vite
安装了 vite-plugin-commonjs 插件,然后出现下面的问题
Error: Cannot find the native Koffi module; did you bundle it correctly?
在 koffi 的代码里面打印 filenames,发现和 electron 有关,
[koffi] filenames: [
'/Users/z/a/simple-memos/.vite/build/../build/2.3.20/koffi_darwin_arm64/koffi.node',
'/Users/z/a/simple-memos/node_modules/electron/dist/Electron.app/Contents/Resources/koffi/2.3.20/koffi_darwin_arm64/koffi.node',
'/Users/z/a/simple-memos/node_modules/electron/dist/Electron.app/Contents/Resources/build/2.3.20/koffi_darwin_arm64/koffi.node'
] arch: arm64
![[Pasted image 20250109040440.png]]
在 Windows 上也出现这个问题了,说明require这个问题和系统无关
解决这个require问题的思路是什么?
从 vite 的配置入手,如何在前端(或者 electron 项目)中导入 commonjs 模块 配置了插件,又出现下面的报错
App threw an error during load
Error: Could not dynamically require "/Users/z/a/simple-memos/build/node_sqlite3.node". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.
at commonjsRequire (/Users/z/a/simple-memos/.vite/build/main.js:639:9)
at bindings2 (/Users/z/a/simple-memos/.vite/build/main.js:732:50)
at Object.<anonymous> (/Users/z/a/simple-memos/.vite/build/main.js:799:22)
at Module._compile (node:internal/modules/cjs/loader:1484:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1564:10)
at Module.load (node:internal/modules/cjs/loader:1295:32)
at Module._load (node:internal/modules/cjs/loader:1111:12)
at c._load (node:electron/js2c/node_init:2:16955)
at cjsLoader (node:internal/modules/esm/translators:350:17)
at ModuleWrap.<anonymous> (node:internal/modules/esm/translators:286:7)
不能动态 require node_sqlite3.node,原因是启动 dev 的时候,并没有将 sqlite3 打包进 build 目录
入手思路:使用相同依赖,搭建最小的复现项目demo,通过调试这个小demo来找出问题根源
使用哪些依赖?
"sqlite3": "^5.1.7",
dev:
"ts-node": "^10.0.0",
"typescript": "^5.7.2",
"vite": "^5.0.12",
"electron": "33.2.1",
"electron-builder": "^24.6.4",
"electron-prokit": "^16.1.2",
"@electron-forge/cli": "^7.6.0",
"@electron-forge/maker-deb": "^7.6.0",
"@electron-forge/maker-rpm": "^7.6.0",
"@electron-forge/maker-squirrel": "^7.6.0",
"@electron-forge/maker-zip": "^7.6.0",
"@electron-forge/plugin-auto-unpack-natives": "^7.6.0",
"@electron-forge/plugin-fuses": "^7.6.0",
"@electron-forge/plugin-vite": "^7.6.0",
"@electron-prokit/create-service": "^3.0.0",
"@electron/fuses": "^1.8.0",
关键词:sqlite3, node, vite, electron-forge
https://github.com/electron/forge#readme
electron-forge 的模板有问题
依赖的上游出现了问题,如何解决比较好?
可以尝试分析整个链路
npx create-electron-app@7.5.0 my-app-old
验证可以正常使用
现在将 simple-memos的依赖更换到这个版本,看看有没有问题发生。。
错误依然出现,说明不是这个模板的问题,是其他依赖到的问题
新建一个新的项目,尝试最小复现,然后再分析怎么解决
差距: 1. vite 配置 2. 读取操作代码
使用 electron-forge 脚手架创建 vite-typescript 项目,而不是普通的项目
验证不会报错。。。
或者不是依赖的问题,而是在项目代码中编写的问题