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

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

更多关于uni-app小程序单页模式下 uni.getAppBaseInfo()失效的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

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

更多关于uni-app小程序单页模式下 uni.getAppBaseInfo()失效的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在 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);
回到顶部