uni-app写的uni.getSystemInfoSync()在打包发行到微信小程序时报错提示wx.getSystemInfoSync已经弃用

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

uni-app写的uni.getSystemInfoSync()在打包发行到微信小程序时报错提示wx.getSystemInfoSync已经弃用

图片

9 回复

解决了吗?58版本编译还报错,uni-app官方包都已经更新了


在 4.41 alpha 已修复这个问题,uniapp 框架已经不带有警告,如果还有其它警告,是项目中有使用 getSystemInfo 的结果

正式4.45还是会警告,使用的是uni.getSystemInfoSync

回复 蔡cai: 使用uni.getSystemInfoSync,在微信上会透传,使用 wx.getSystemInfoSync ,请避免使用uni.getSystemInfoSync

使用wx.getSystemInfoSync不也是会警告,可不可以uni.getSystemInfoSync在微信小程序编译为wx.getSystemSetting/wx.getAppAuthorizeSetting/wx.getDeviceInfo/wx.getWindowInfo/wx.getAppBaseInfo的整合体

// #ifdef MP-WEIXIN uni.getSystemInfoSync = () => { return { …wx.getSystemSetting(), …wx.getAppAuthorizeSetting(), …wx.getDeviceInfo(), …wx.getWindowInfo(), …wx.getAppBaseInfo() } } // #endif 就是类似这个意思

不懂透传具体原理哈,就是可以不可以某个api不透传【哭笑】

如果API传输的是敏感数据或者重要信息,比如密码、支付信息啥的,那你就得用透传了,不然数据在传输过程中被改了可就麻烦了!AI查到的,好像有一部分是重要的

在uni-app中,当你遇到uni.getSystemInfoSync()在打包发行到微信小程序时报错提示wx.getSystemInfoSync已经弃用的问题时,这是因为微信小程序平台自身对API的更新导致的。为了确保代码兼容并能在微信小程序中正常运行,你可以使用uni-app提供的适配方案或者微信小程序的替代方案。

在uni-app中,虽然uni.getSystemInfoSync()是一个常用的同步方法,但在微信小程序中,应使用异步方法wx.getSystemInfo或uni-app提供的封装方法来避免此类问题。以下是如何在uni-app中修改代码以适应微信小程序环境的示例:

原代码(使用同步方法)

// 原始代码,可能在uni-app中工作正常,但在微信小程序中报错
const systemInfo = uni.getSystemInfoSync();
console.log(systemInfo.model); // 打印设备型号

修改后的代码(使用异步方法)

// 使用uni-app提供的异步方法,确保兼容微信小程序
uni.getSystemInfo({
    success: function (res) {
        console.log(res.model); // 打印设备型号
    },
    fail: function (err) {
        console.error('获取系统信息失败', err);
    }
});

使用Promise封装(可选,为了代码风格统一)

如果你更喜欢使用Promise风格的代码,可以自己封装一个函数:

function getSystemInfo() {
    return new Promise((resolve, reject) => {
        uni.getSystemInfo({
            success: resolve,
            fail: reject
        });
    });
}

// 使用封装后的函数
getSystemInfo()
    .then(systemInfo => {
        console.log(systemInfo.model); // 打印设备型号
    })
    .catch(err => {
        console.error('获取系统信息失败', err);
    });

注意事项

  • 确保在调用这些API时,考虑到它们是异步的,不要在调用后立即使用返回的结果,而应该在回调函数中或Promise的.then()块中使用。
  • 在开发过程中,经常检查uni-app和微信小程序的官方文档,以了解API的最新状态和最佳实践。
  • 对于其他可能受影响的API,同样应该遵循异步调用的原则,或者查找uni-app提供的封装方法。

通过上述修改,你的代码应该能够在微信小程序中正常运行,同时保持与uni-app框架的兼容性。

回到顶部