uni-app小程序单页模式下 uni.getAppBaseInfo()失效

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

uni-app小程序单页模式下 uni.getAppBaseInfo()失效

示例代码:

async onLoad() {
    const baseInfo = uni.getAppBaseInfo()
    console.log("baseInfo",baseInfo);
}

操作步骤:



## 预期结果:

可以通过uni.getAppBaseInfo()获取appid

实际结果:

无值



## bug描述:

小程序单页模式下,uni.getAppBaseInfo()是undefined
开发环境 版本号 项目创建方式
Windows 11 HBuilderX
HBuilderX 3.97
第三方开发者工具 1.06.2310071
基础库 3.2.0

2 回复

基础库版本号2.29.2还可以,2.30后面的版本就不行了


在 uni-app 中,uni.getAppBaseInfo() 是用于获取小程序的基础信息的 API。然而,在单页模式下(即 "lazyCodeLoading": "requiredComponents""lazyCodeLoading": "requiredComponents" 配置下),可能会出现 uni.getAppBaseInfo() 失效的情况。

原因分析

单页模式下,小程序的代码是按需加载的,这意味着某些全局的 API 或对象可能在小程序启动时并未完全初始化,导致 uni.getAppBaseInfo() 无法正常获取到信息。

解决方案

  1. 延迟调用:在页面加载完成后,延迟一段时间再调用 uni.getAppBaseInfo(),以确保相关对象已经初始化。

    setTimeout(() => {
      const appBaseInfo = uni.getAppBaseInfo();
      console.log(appBaseInfo);
    }, 1000);
  2. 使用 onLaunchonShow 生命周期:在 App.vueonLaunchonShow 生命周期中调用 uni.getAppBaseInfo(),因为这些生命周期在小程序启动时会被触发,此时相关对象已经初始化。

    export default {
      onLaunch() {
        const appBaseInfo = uni.getAppBaseInfo();
        console.log(appBaseInfo);
      }
    }
  3. 检查小程序配置:确保小程序的 app.jsonpages.json 中没有配置 "lazyCodeLoading": "requiredComponents",或者将其改为 "lazyCodeLoading": "none",以禁用单页模式。

    {
      "lazyCodeLoading": "none"
    }
  4. 使用其他 API:如果 uni.getAppBaseInfo() 仍然无法使用,可以尝试使用其他 API 来获取类似的信息,例如 uni.getSystemInfoSync()

    const systemInfo = uni.getSystemInfoSync();
    console.log(systemInfo);
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!