全网搜不到,electron(vue3+vite+flask+sqlite + 其它应用的)教程,那只能自己来踩坑了,真的是踩了完完全全一整天,从上午十点到,现在这个凌晨一点,终于完结了,哎要不是有兴趣,给自己的原创程序加个桌面应用版本。当然明天还要继续加上paddle+flask的打包程序!加油!
第一大坑 浏览器访问不了资源文件,路径错误导致
解决: vite.config.js
文件中增加
export default defineConfig({
base: './', // 新增
})
分析: base: './'
将vite项目打包是的路径变为相对路径
,若不指定是绝对路径
,nginx可以正常使用,但由于electron是使用file:
形式的路径将无法正常访问。
第二大坑 无法杀死pyinstaller打包的进程
场景:
- 用pyinstaller打包了flask+sqlite3应用为.exe可执行文件
pyinstaller vs-proxy.py -F --add-data "F:\\Document\\VSCode\\Projects\\courseware-abstract\\vs-proxy\\app\\models\\db\\vsearcher.db;.\\app\\models\\db" --nowindowed
- 在package.json中配置将该文件导入
"build": {
"extraResources": [
{
"from": "./resources/app",
"to": "./app"
}
]
}
- 使用如下开启flask服务
app.whenReady().then(() => {
createWindow()
let app_path = path.join(process.cwd(), 'resources/app');
let ps = child_process.spawn(path.join(app_path, 'vs-proxy/vs-proxy.exe'))
app.child_process_list.push(ps) // 新增vs-proxy子进程
}
- 杀死进程(
失败
)
app.child_process_list.map(ps => ps.kill())
解决方案: 打包python的命令中的-F
去了,即打包成一个目录,包含运行时所需要的所有文件。
pyinstaller vs-proxy.py --add-data "F:\\Document\\VSCode\\Projects\\courseware-abstract\\vs-proxy\\app\\models\\db\\vsearcher.db;.\\app\\models\\db" --nowindowed
原因分析: 目前还未知,真的是耗费的我一整天,踩坑