uni-app中uni.getSystemInfoSync和uni.getAppBaseInfo在编译小程序时获取appName、appVersion、appVersionCode为undefined

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

uni-app中uni.getSystemInfoSync和uni.getAppBaseInfo在编译小程序时获取appName、appVersion、appVersionCode为undefined

项目信息

开发环境、版本号和项目创建方式

项⽬信息 版本/详情
HbuilderX版本 4.36
小程序基础库版本 3.7.2
项目创建方式 uniapp/cli项目,vue3/vite/ts
cli版本 @dcloudio/uni-app": "3.0.0-4000820240401001
@dcloudio/uni-app-plus": "3.0.0-4000820240401001
@dcloudio/uni-components": "3.0.0-4000820240401001
@dcloudio/uni-h5": "3.0.0-4000820240401001
@dcloudio/uni-mp-alipay": "3.0.0-4000820240401001
@dcloudio/uni-mp-baidu": "3.0.0-4000820240401001
@dcloudio/uni-mp-jd": "3.0.0-4000820240401001
@dcloudio/uni-mp-kuaishou": "3.0.0-4000820240401001
@dcloudio/uni-mp-lark": "3.0.0-4000820240401001
@dcloudio/uni-mp-qq": "3.0.0-4000820240401001
@dcloudio/uni-mp-toutiao": "3.0.0-4000820240401001
@dcloudio/uni-mp-weixin": "3.0.0-4000820240401001
@dcloudio/uni-mp-xhs": "3.0.0-4000820240401001
@dcloudio/uni-quickapp-webview": "3.0.0-4000820240401001

打包H5 getAppBaseInfo 输出

{  
    "appId": "__UNI__7B9007A",  
    "appName": "像素学堂",  
    "appVersion": "1.2.1",  
    "appVersionCode": 121,  
    "appLanguage": "zh-Hans",  
    "enableDebug": false,  
    "hostName": "chrome",  
    "hostVersion": "131.0.0.0",  
    "hostTheme": "light",  
    "hostLanguage": "zh-CN",  
    "language": "zh-CN",  
    "SDKVersion": "",  
    "theme": "light",  
    "version": ""  
}

打包小程序输出

{  
    "SDKVersion": "3.7.2",  
    "appId": undefined,  
    "appLanguage": "zh-Hans",  
    "appName": undefined,  
    "appVersion": undefined,  
    "appVersionCode": undefined,  
    "enableDebug": false,  
    "fontSizeScaleFactor": 1,  
    "fontSizeSetting": 16,  
    "host": {  
        "env": "WeChat"  
    },  
    "hostLanguage": "zh-CN",  
    "hostName": "WeChat",  
    "hostSDKVersion": "3.7.2",  
    "hostTheme": undefined,  
    "hostVersion": "8.0.5",  
    "language": "zh_CN",  
    "mode": "default",  
    "version": "8.0.5"  
}

11 回复

你是 cli 项目使用的 hx 运行?如果用 cli 打包出的 dist 运行到微信小程序工具一样是 undefined 吗?
提供一个可复现的示例工程


是用 Hx 内的菜单运行,使用的 cli 命令行 npm run dev:mp-weixin 和 npm run dev:h5

回复 天哉: 上边打错了,不是用 Hx 运行的

回复 天哉: 直接用命令行运行的?有没有示例?可以升级 cli 版本到最新的 alpha 试试看。提供一个示例 demo 我来复现一下

回复 DCloud_UNI_LXH: 示例 Demo 已发送

回复 DCloud_UNI_LXH: 找到原因了,是因为我修改了 vite.config.ts 的 define 属性,但是这块我必须要改,有什么办法可以兼容 H5 小程序 两端呢

你是怎么修改的,这部分确实也是通过 define 写入的。但是一般来说不会影响到,不是直接给了一个 define?

回复 DCloud_UNI_LXH: 已经找到方法了,之前是因为我是直接修改的 process.env 这个对象 process.env.XXX 这样改就没事了

回复 DCloud_UNI_LXH: 麻烦您了,非常感谢,结贴吧

在uni-app中,uni.getSystemInfoSyncuni.getAppBaseInfo 是用于获取系统信息和应用基础信息的API。然而,在小程序环境中,这些API的行为可能与在原生App或H5中有所不同。特别是,对于uni.getAppBaseInfo,它在小程序中并不适用,因为它主要用于获取原生App的相关信息。

对于uni.getSystemInfoSync,虽然它可以在小程序中使用来获取一些系统信息,但它并不包含appNameappVersionappVersionCode这些信息,因为这些信息是小程序平台本身不直接暴露的。小程序的环境相对封闭,很多与原生应用相关的信息和功能都无法直接访问。

下面是一个使用uni.getSystemInfoSync获取小程序中可获取的系统信息的示例代码:

// 在uni-app的页面或组件的script部分
export default {
  onLoad() {
    const systemInfo = uni.getSystemInfoSync();
    console.log('系统信息:', systemInfo);
    
    // 你可以访问如平台、系统版本、屏幕宽度等信息
    const platform = systemInfo.platform;
    const system = systemInfo.system;
    const model = systemInfo.model;
    const windowWidth = systemInfo.windowWidth;
    const windowHeight = systemInfo.windowHeight;
    
    console.log('平台:', platform);
    console.log('系统版本:', system);
    console.log('设备型号:', model);
    console.log('屏幕宽度:', windowWidth);
    console.log('屏幕高度:', windowHeight);
    
    // 注意:appName、appVersion、appVersionCode 在小程序中是无法获取的
  }
}

对于需要在小程序中获取应用版本等信息的需求,通常的做法是通过小程序的后台管理界面查看或更新版本信息,或者通过小程序的配置信息(如app.json中的version字段,但这通常用于内部版本管理,不会直接暴露给用户)来管理。如果需要将这些信息展示给用户,一种常见的做法是在小程序发布新版本时,通过后台手动更新这些信息到小程序的某个配置或数据接口中,然后在前端通过请求这个接口来获取。

总之,由于小程序平台的限制,uni.getSystemInfoSyncuni.getAppBaseInfo无法在小程序中获取appNameappVersionappVersionCode等信息。开发者需要根据小程序的特点和需求,采用其他方式来管理和展示这些信息。

回到顶部