uni-app ios 启动只显示tabbar 其他页面白屏

uni-app ios 启动只显示tabbar 其他页面白屏

操作步骤:

  • 启报时报错

预期结果:

  • 正常展示

实际结果:

  • Runtime.IOS.js:367 call [getJSFMVersion] error: jsframework has no such api
    • (anonymous) @ Runtime.IOS.js:367

bug描述:

  • Runtime.IOS.js:367 call [getJSFMVersion] error: jsframework has no such api
    • (anonymous) @ Runtime.IOS.js:367
    • 报错

Image


### 表格
| 项目       | 信息           |
|------------|----------------|
| 产品分类   | uniapp/App     |
| PC开发环境 | Mac            |
| 版本号     | 14.3.1 (23D60) |
| HBuilderX类型 | 正式         |
| HBuilderX版本号 | 4.01        |
| 手机系统   | iOS            |
| 手机系统版本号 | iOS 17       |
| 手机厂商   | 苹果          |
| 手机机型   | iPhone 13 promax |
| 页面类型   | vue            |
| vue版本    | vue3           |
| 打包方式   | 云端           |
| 项目创建方式 | HBuilderX      |
4 回复

我这边可以正常运行,运行官方示例项目会复现该问题吗?


官方示例没用问题 微信小程序也没问题 就app有问题

回复 5***@qq.com: 检查一下代码是否有误,贴一下示例工程我看看

在 uni-app 开发中,如果你在 iOS 设备上遇到启动应用时只显示 TabBar,而其他页面显示白屏的问题,可能是由多种原因引起的。以下是一些可能的原因和解决方法:


1. 页面路由配置问题

确保 pages.json 中的路由配置正确,尤其是 TabBar 页面和首页的路由路径是否正确。

{
  "pages": [
    {
      "path": "pages/index/index",
      "style": {
        "navigationBarTitleText": "首页"
      }
    },
    {
      "path": "pages/other/other",
      "style": {
        "navigationBarTitleText": "其他页面"
      }
    }
  ],
  "tabBar": {
    "list": [
      {
        "pagePath": "pages/index/index",
        "text": "首页"
      },
      {
        "pagePath": "pages/other/other",
        "text": "其他"
      }
    ]
  }
}

2. 页面加载逻辑问题

检查页面加载逻辑,确保页面在 onLoadonShow 生命周期中没有错误或死循环。

export default {
  onLoad() {
    console.log('页面加载');
  },
  onShow() {
    console.log('页面显示');
  }
};

3. 样式或布局问题

检查页面样式和布局,确保没有因样式问题导致内容无法显示。例如:

  • 检查 flex 布局是否正确。
  • 确保元素的高度、宽度和 overflow 属性设置合理。

4. 网络请求或异步操作问题

如果在页面加载时有网络请求或异步操作,确保这些操作没有导致页面卡死或白屏。可以尝试延迟加载或使用 Promise 处理异步逻辑。

export default {
  async onLoad() {
    try {
      const data = await this.fetchData();
      console.log(data);
    } catch (error) {
      console.error('请求失败', error);
    }
  },
  methods: {
    fetchData() {
      return new Promise((resolve) => {
        setTimeout(() => {
          resolve({ message: '数据加载成功' });
        }, 1000);
      });
    }
  }
};

5. iOS 特定问题

iOS 设备可能存在一些特有的问题,例如:

  • WebView 兼容性问题:确保使用的 WebView 版本兼容 iOS 设备。
  • 缓存问题:尝试清除应用缓存或重新编译项目。
  • 权限问题:确保应用在 iOS 设备上有足够的权限运行。

6. 调试工具

使用以下工具进行调试:

  • HBuilderX 调试工具:查看控制台日志,定位错误。
  • Safari 开发者工具:连接 iOS 设备,使用 Safari 的开发者工具检查页面结构和网络请求。
  • Vue Devtools:如果使用 Vue.js,可以使用 Vue Devtools 检查组件状态。

7. 重新编译项目

尝试以下步骤:

  1. 删除 unpackage 文件夹。
  2. 清除 HBuilderX 缓存。
  3. 重新编译项目并运行。

8. 检查插件或依赖

如果使用了第三方插件或依赖,确保其兼容性。某些插件可能在 iOS 设备上表现异常。


9. 更新 uni-app 版本

确保你使用的是最新版本的 uni-app,旧版本可能存在一些已知问题。

npm update -g [@vue](/user/vue)/cli
npm update -g [@dcloudio](/user/dcloudio)/uni-cli
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!