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 |
基础库版本号2.29.2还可以,2.30后面的版本就不行了
在 uni-app 中,uni.getAppBaseInfo()
是用于获取小程序的基础信息的 API。然而,在单页模式下(即 "lazyCodeLoading": "requiredComponents"
或 "lazyCodeLoading": "requiredComponents"
配置下),可能会出现 uni.getAppBaseInfo()
失效的情况。
原因分析
单页模式下,小程序的代码是按需加载的,这意味着某些全局的 API 或对象可能在小程序启动时并未完全初始化,导致 uni.getAppBaseInfo()
无法正常获取到信息。
解决方案
-
延迟调用:在页面加载完成后,延迟一段时间再调用
uni.getAppBaseInfo()
,以确保相关对象已经初始化。setTimeout(() => { const appBaseInfo = uni.getAppBaseInfo(); console.log(appBaseInfo); }, 1000);
-
使用
onLaunch
或onShow
生命周期:在App.vue
的onLaunch
或onShow
生命周期中调用uni.getAppBaseInfo()
,因为这些生命周期在小程序启动时会被触发,此时相关对象已经初始化。export default { onLaunch() { const appBaseInfo = uni.getAppBaseInfo(); console.log(appBaseInfo); } }
-
检查小程序配置:确保小程序的
app.json
或pages.json
中没有配置"lazyCodeLoading": "requiredComponents"
,或者将其改为"lazyCodeLoading": "none"
,以禁用单页模式。{ "lazyCodeLoading": "none" }
-
使用其他 API:如果
uni.getAppBaseInfo()
仍然无法使用,可以尝试使用其他 API 来获取类似的信息,例如uni.getSystemInfoSync()
。const systemInfo = uni.getSystemInfoSync(); console.log(systemInfo);