uni-app中uni.getSystemInfoSync和uni.getAppBaseInfo在编译小程序时获取appName、appVersion、appVersionCode为undefined
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"
}
是用 Hx 内的菜单运行,使用的 cli 命令行 npm run dev:mp-weixin 和 npm run dev:h5
回复 天哉: 上边打错了,不是用 Hx 运行的
回复 天哉: 直接用命令行运行的?有没有示例?可以升级 cli 版本到最新的 alpha 试试看。提供一个示例 demo 我来复现一下
回复 DCloud_UNI_LXH: 示例 Demo 已发送
你是怎么修改的,这部分确实也是通过 define 写入的。但是一般来说不会影响到,不是直接给了一个 define?
回复 DCloud_UNI_LXH: 已经找到方法了,之前是因为我是直接修改的 process.env 这个对象 process.env.XXX 这样改就没事了
回复 DCloud_UNI_LXH: 麻烦您了,非常感谢,结贴吧
示例 demo
在uni-app中,uni.getSystemInfoSync
和 uni.getAppBaseInfo
是用于获取系统信息和应用基础信息的API。然而,在小程序环境中,这些API的行为可能与在原生App或H5中有所不同。特别是,对于uni.getAppBaseInfo
,它在小程序中并不适用,因为它主要用于获取原生App的相关信息。
对于uni.getSystemInfoSync
,虽然它可以在小程序中使用来获取一些系统信息,但它并不包含appName
、appVersion
、appVersionCode
这些信息,因为这些信息是小程序平台本身不直接暴露的。小程序的环境相对封闭,很多与原生应用相关的信息和功能都无法直接访问。
下面是一个使用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.getSystemInfoSync
和uni.getAppBaseInfo
无法在小程序中获取appName
、appVersion
、appVersionCode
等信息。开发者需要根据小程序的特点和需求,采用其他方式来管理和展示这些信息。