electron(vue3+vite+flask+sqlite)构建桌面应用程序 踩坑

全网搜不到,electron(vue3+vite+flask+sqlite + 其它应用的)教程,那只能自己来踩坑了,真的是踩了完完全全一整天,从上午十点到,现在这个凌晨一点,终于完结了,哎要不是有兴趣,给自己的原创程序加个桌面应用版本。当然明天还要继续加上paddle+flask的打包程序!加油!

第一大坑 浏览器访问不了资源文件,路径错误导致

解决: vite.config.js文件中增加

export default defineConfig({
    base: './', // 新增
})

分析: base: './'将vite项目打包是的路径变为相对路径,若不指定是绝对路径,nginx可以正常使用,但由于electron是使用file:形式的路径将无法正常访问。

第二大坑 无法杀死pyinstaller打包的进程

场景:

  1. 用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
  1. 在package.json中配置将该文件导入
 "build": {
    "extraResources": [
            {
                "from": "./resources/app",
                "to": "./app"
            }
        ]
 }
  1. 使用如下开启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子进程
  }
  1. 杀死进程(失败)
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

原因分析: 目前还未知,真的是耗费的我一整天,踩坑

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值