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.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() 无法正常获取到信息。
解决方案
-
延迟调用:在页面加载完成后,延迟一段时间再调用
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);

