uni-app应用版本+1后,生成wgt集成到app首次打开白屏或提示“请求的页面无法打开”,重试后正常

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

uni-app应用版本+1后,生成wgt集成到app首次打开白屏或提示“请求的页面无法打开”,重试后正常

操作步骤:

  • 应用版本+1,打包成wgt包集成到App

预期结果:

  • 第一次也能正常打开

实际结果:

  • 第一次打开都会白屏或者弹出页面提示无法打开

bug描述:

  • uniApp打包wgt,版本增加后集成到原生App上,第一次打开会白屏或者提示页面无法打开,后续打开正常。请查看解决下!
信息类别 详细信息
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 win11
HBuilderX类型 正式
HBuilderX版本号 4.29
手机系统 Android
手机系统版本号 Android 14
手机厂商 vivo
手机机型 所有手机
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

Image 1 Image 2


2 回复

先试试这个 使用wgt资源包更新后,部分安卓手机首次启动白屏,是缓存问题导致,可以参考此贴临时解决:https://ask.dcloud.net.cn/question/144630


在遇到uni-app应用版本升级后,首次打开出现白屏或提示“请求的页面无法打开”,但重试后正常的问题时,这通常与资源加载、缓存处理或页面路由管理有关。以下是一些可能的代码调整方案,旨在帮助解决此类问题。

1. 清理缓存

确保在应用启动时清理旧版本的缓存资源。可以在App.vueonLaunch生命周期函数中添加代码来清理缓存。

// App.vue
export default {
  onLaunch: function () {
    // 清理旧版本的缓存,例如本地存储、文件缓存等
    plus.io.resolveLocalFileSystemURL('_www/', entry => {
      entry.createReader().readEntries(entries => {
        entries.forEach(entry => {
          if (entry.isDirectory) {
            // 这里可以根据版本号判断哪些目录需要删除
            entry.removeRecursively(err => {
              if (err) {
                console.error('Failed to clear cache:', err);
              } else {
                console.log('Cache cleared successfully');
              }
            });
          }
        });
      }, err => {
        console.error('Failed to read entries:', err);
      });
    }, err => {
      console.error('Failed to resolve local file system URL:', err);
    });

    // 其他初始化代码...
  },
  // ...
}

2. 确保页面路由正确

检查pages.json中的页面路由配置是否正确,特别是升级后是否有新增或删除的页面。

// pages.json
{
  "pages": [
    {
      "path": "pages/index/index",
      "style": {
        "navigationBarTitleText": "首页"
      }
    },
    // 确保所有页面路径都正确无误
  ],
  "window": {
    "backgroundTextStyle": "light",
    "navigationBarBackgroundColor": "#fff",
    "navigationBarTitleText": "WeChat",
    "navigationBarTextStyle": "black"
  }
}

3. 异步资源加载处理

如果应用依赖异步加载的资源(如图片、配置文件等),确保这些资源在页面渲染前已正确加载。可以使用Promise或async/await来处理异步操作。

// 假设有一个异步函数加载配置
async function loadConfig() {
  try {
    const response = await fetch('path/to/config.json');
    const config = await response.json();
    // 使用配置数据
    console.log('Config loaded:', config);
  } catch (error) {
    console.error('Failed to load config:', error);
    // 处理加载失败的情况,如显示错误页面
  }
}

// 在App.vue的onShow或页面组件的onLoad中调用
export default {
  onLoad() {
    loadConfig();
  }
}

以上代码示例提供了清理缓存、确保页面路由正确以及处理异步资源加载的方法,这些是解决uni-app应用升级后首次打开白屏或页面无法打开问题的常见策略。根据具体情况调整实现细节。

回到顶部