uni-app离线打包,wgt热更新,不开启强制更新时报错

发布于 1周前 作者 vueper 来自 Uni-App

uni-app离线打包,wgt热更新,不开启强制更新时报错

产品分类

uniapp/App

开发环境信息

项目 信息
PC开发环境操作系统 Mac
HBuilderX类型 正式
HBuilderX版本号 4.29
手机系统 Android
手机系统版本号 Android 10
手机机型 话机
页面类型 vue
vue版本 vue2
打包方式 离线
项目创建方式 HBuilderX

操作步骤

如上

预期结果

如上

实际结果

如上

bug描述

uniapp 采用离线打包,wgt更新, 不开启 【强制更新】会报错。开启【强制更新】【静默更新】 正常
SDK 用的最新的 24-10月 8号的那个

报错信息如下:
I [ERROR][Vue warn]: Error in event handler for “api.onDownloadTaskStateChange”: “Error: error: uts-progressNotification not found.”

(found <Root>)

2024-10-23 15:41:34.701 9766-9813 console com.weyon.yuncall I [ERROR]Error: error: uts-progressNotification not found.
2024-10-23 15:41:34.704 9766-9813 console com.weyon.yuncall I [ERROR][Vue warn]: Error in event handler for “api.onDownloadTaskStateChange”: “Error: error: uts-progressNotification not found.”


3 回复

我也出现同样问题,有没有解决呢?普通模式报错,静默、强制不报错


在处理uni-app离线打包及wgt热更新时,如果不开启强制更新但遇到报错问题,通常涉及到资源文件的正确加载与版本校验。以下是一个简要的代码案例和流程,帮助你排查和解决这些问题。

1. 确认离线包(wgt)生成与上传

首先,确保你的离线包(wgt文件)是通过uni-app的官方工具正确生成的。使用HBuilderX工具,可以通过以下步骤生成wgt包:

  • 打开HBuilderX,选择你的uni-app项目。
  • 点击“发行”->“网站-H5手机版”或“App-原生App-云端打包”。
  • 在弹出的窗口中,选择“制作离线包(wgt)”。
  • 完成打包后,wgt文件将生成在项目的unpackage/dist/build/packages/目录下。

2. 上传wgt包到服务器

将生成的wgt文件上传到你的服务器,确保路径正确,并且可以通过HTTP或HTTPS访问。

3. 客户端配置热更新

在客户端代码中,配置manifest.json文件以支持热更新:

{
  "mp-weixin": { // 或其他平台配置
    "appid": "your-appid",
    "setting": {
      "urlCheck": false
    },
    "usingComponents": true,
    "permission": {
      "scope.userInfo": {
        "desc": "你的用户信息将用于小程序的登录"
      }
    }
  },
  "app-plus": {
    "distribute": {
      "wgt": {
        "check": true, // 开启热更新检查
        "url": "https://yourserver.com/path/to/your.wgt" // 离线包下载地址
      }
    }
  }
}

4. 处理版本校验逻辑

在App启动时,通过代码手动检查版本并进行更新,而非强制更新:

// main.js 或 app.js
if (window.plus) {
  plus.runtime.getProperty(function(info) {
    const currentVersion = info.version;
    const serverVersion = 'your-server-version'; // 从服务器获取最新版本号

    if (currentVersion !== serverVersion) {
      plus.runtime.install({
        name: 'update',
        url: 'https://yourserver.com/path/to/your.wgt',
        success: function() {
          console.log('更新成功');
        },
        fail: function(e) {
          console.error('更新失败:', e);
        }
      });
    } else {
      console.log('已是最新版本');
    }
  });
}

5. 错误处理

在更新过程中,可能会遇到各种错误,如网络问题、文件损坏等。务必在fail回调中处理这些错误,提供用户友好的提示信息。

总结

确保离线包生成正确、上传路径正确、客户端配置正确,并通过代码逻辑合理处理版本校验与更新过程。上述代码提供了一个基本的框架,你可以根据实际情况进行调整和扩展。

回到顶部