pangao1990 / PPX

基于Python和JavaScript,一键生成macOS、Windows和Linux平台客户端应用程序
https://blog.pangao.vip/docs-ppx/
GNU Affero General Public License v3.0
231 stars 39 forks source link

pnpm run start和windows打包后效果不一致 #55

Closed shengguo closed 1 month ago

shengguo commented 1 month ago

在onMounted中从数据库取数据然后赋值给pinia,这块逻辑在pnpm run start时是正常的, 但windows打包后启动exe,这块代码就失效了,pinia值没被更新。

pangao1990 commented 1 month ago

能贴出部分代码看看吗?单纯的描述,我很难看出问题出在哪里。。。

shengguo commented 1 month ago

我通过打印日志看了exe的执行效果。 实测,onMounted中写的前端代码会执行,比如计时器什么的,但调用后端都会失效,好像后端还没准备好。 应该是执行顺序的问题。 您可以试一下,比如您可以后端system.py中写个log输出,从前端调用这个方法。onMounted中调用这个方法是不会执行的。

pangao1990 commented 1 month ago

你可以参考一下PPX项目里,程序打开后自动检测升级的代码 gui/src/components/BtnUpdate.vue ,部分代码如下:

onMounted(() => {
  state.timer = setInterval(() => {
    if (window.pywebview != undefined) {
      onCheckUpdate(true) // 调用后端API,自动检测更新
      clearInterval(state.timer)
      state.timer = ''
    }
  }, 100)
})

后端函数是挂载在window.pywebview参数下面。在前端调用onMounted的时候,后端的函数可能还没挂载上。所以,最好是定时检测一下函数是否挂载成功,再调用。

shengguo commented 1 month ago

谢谢,确实好用!!