热更新前uni-app中uni.startWifi初始化Wi-Fi正常使用,热更新后报错:TypeError: uni.startWifi is not a function

热更新前uni-app中uni.startWifi初始化Wi-Fi正常使用,热更新后报错:TypeError: uni.startWifi is not a function

信息类别 详情
产品分类 uniapp/App
PC开发环境 Windows
PC版本号 X64
HBuilderX 正式版
版本号 3.8.12
手机系统 Android
系统版本号 Android 10
手机厂商 魅族
手机机型 魅族16T
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

示例代码:

wifiCheck() {
    // #ifdef APP-PLUS
    console.log('========开始验证wifi========');
    let count = 3; // wifi和定位权限相关,因此需要多次尝试
    const call = resolve => {
        try {
            console.log(typeof uni.startWifi, 'uni.startWifi');
            this.timeouts.push(setTimeout(() => {
                uni.startWifi({ // 验证wifi权限
                    success: res => {
                        this.pageEventCall(103);
                        // uni.showToast({
                        //  title:'验证wifi权限',
                        //  icon:'none'
                        // })
                        this.getWifiList();
                        resolve(true)
                    },
                    fail: err => {
                        if (count === 0) {
                            this.pageErrorCall(104);
                            resolve(false)
                        } else {
                            count--;
                            this.timeouts.push(setTimeout(() => {
                                call(resolve)
                            }, 3000)); // 权限未开三秒后重试
                        }
                    }
                })
            }, 1000));
        } catch (e) {
            this.pageEventCall(108, e);
            console.log(e, '-------');
            //TODO handle the exception
        }
    };
    return new Promise(call);
    // #endif
}

操作步骤:

热更新前uni.startWifi 初始化Wi-Fi 正常使用,热更新后报错:TypeError: uni.startWifi is not a function

预期结果:

uni.startWifi 初始化Wi-Fi 正常使用

实际结果:

热更新后报错:TypeError: uni.startWifi is not a function

bug描述:

热更新前uni.startWifi 初始化Wi-Fi 正常使用,热更新后报错:TypeError: uni.startWifi is not a function


更多关于热更新前uni-app中uni.startWifi初始化Wi-Fi正常使用,热更新后报错:TypeError: uni.startWifi is not a function的实战教程也可以访问 https://www.itying.com/category-93-b0.html

7 回复

HBuilderX 3.97.2023110504-alpha 已修复。

更多关于热更新前uni-app中uni.startWifi初始化Wi-Fi正常使用,热更新后报错:TypeError: uni.startWifi is not a function的实战教程也可以访问 https://www.itying.com/category-93-b0.html


@DCloud_Android_DQQ 使用wgt热更新前uni.startWifi 初始化Wi-Fi 正常使用,热更新后报错:TypeError: uni.startWifi is not a function。

@DCloud_Android_DQQ 使用wgt热更新前uni.startWifi 初始化Wi-Fi 正常使用,热更新后报错:TypeError: uni.startWifi is not a function。

HBuilderX版本是多少?生成wgt使用了不同的HBuilderX版本吗

版本号是相同的3.8.12

已确认,预计下个版本修复,临时方案,可以下载附件中的文件,替换到 HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/uni-cli-shared/lib/uni_modules

这个问题的根本原因是热更新后原生模块未正确加载导致的。以下是具体分析和解决方案:

  1. 问题分析:
  • 热更新后uni.startWifi报错为undefined,说明原生WiFi模块未正确注入
  • 这种情况通常发生在热更新时原生模块未正确同步更新
  1. 解决方案:
  • 检查manifest.json中是否配置了WiFi模块权限
  • 确保热更新包包含完整的原生模块
  • 尝试重新打包完整基座再测试热更新
  1. 临时解决方案:
  • 在调用前先检查API是否存在:
if(typeof uni.startWifi === 'function'){
    // 正常调用
}else{
    // 降级处理或提示用户重启应用
}
回到顶部