热更新前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
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
这个问题的根本原因是热更新后原生模块未正确加载导致的。以下是具体分析和解决方案:
- 问题分析:
- 热更新后uni.startWifi报错为undefined,说明原生WiFi模块未正确注入
- 这种情况通常发生在热更新时原生模块未正确同步更新
- 解决方案:
- 检查manifest.json中是否配置了WiFi模块权限
- 确保热更新包包含完整的原生模块
- 尝试重新打包完整基座再测试热更新
- 临时解决方案:
- 在调用前先检查API是否存在:
if(typeof uni.startWifi === 'function'){
// 正常调用
}else{
// 降级处理或提示用户重启应用
}