uni-app uni.request 断网后启动报错 {"errMsg":"request:fail abort statusCode:-1"}
uni-app uni.request 断网后启动报错 {“errMsg”:“request:fail abort statusCode:-1”}
测试过的手机
魅族18,小米12,iqoo z1,红米K40,oppo reno6
示例代码
uni.request({
url: apiUrl, //仅为示例,并非真实接口地址。
data: data,
method: method,
header: header,
success: (apiRes) => { //成功
switch (apiRes.data.code) {
case 0:
console.log(
"%c 备注:", 'font-size:15px', apiName,
"\n 提交方式:", method,
"\n 提交地址:", apiUrl,
"\n 提交data:", data,
"\n 请求返回", apiRes.data);
break;
default:
console.log(
"%c 备注:", 'font-size:15px', apiName,
"\n 提交方式:", method,
"\n 提交地址:", apiUrl,
"\n 提交data:", data,
"\n 请求返回", apiRes.data);
break;
}
console.log(apiRes)
},
fail(apiRes) { //失败
resolve(apiRes); //成功返回,resolve是Promise的回调方式
console.error(
"%c 备注:", 'color:red;font-size:15px', apiName,
"\n 提交方式:", method,
"\n 提交地址:", apiUrl,
"\n 提交data:", data,
"\n 请求返回", apiRes);
if(show){
uni.hideLoading();
}
},
complete(res) { //结束
// #ifdef APP-PLUS
if (getApp().globalData.log == true) {
var logData = '备注:' + apiName +'\r\n'+ '提交方式:' + method + '\r\n'+'提交地址:' + apiUrl +'\r\n'+'token:'+uni.getStorageSync('token')+'\r\n'+ '提交data:' +
JSON.stringify(data) +'\r\n'+ '请求返回' + JSON.stringify(res.data)
log.writeLog(logData, false);
}
// #endif
if(show){
uni.hideLoading();
}
}
});
操作步骤
关闭WIFI和数据后打开 APP uni.request调用返回 {“errMsg"quot;request:fail abort statusCode:-1”} 此时在打开WIFI或数据 APP uni.request直接不响应 出现假死状态 所有的API都不请求 最后从后台关闭APP再进 部分手机 进去会成一直假死的状态 只有从后台清除缓存 或者重新下载才能恢复
预期结果
手机 进去会成一直假死的状态 只有从后台清除缓存 或者重新下载才能恢复
实际结果
如下视频 只有卸载重装才能恢复
bug描述
关闭WIFI和数据后打开 APP uni.request调用返回 {“errMsg"quot;request:fail abort statusCode:-1”} 此时在打开WIFI或数据 APP uni.request直接不响应 出现假死状态 所有的API都不请求 (网络恢复后还是原来的样子) 但是再web上面运行复现不了这个问题 只有在真机里面才会有这个问题
产品分类 | 开发环境操作系统 | 开发环境操作系统版本号 | HBuilderX类型 | HBuilderX版本号 | 手机系统 | 页面类型 | vue版本 | 打包方式 | 项目创建方式 |
---|---|---|---|---|---|---|---|---|---|
uniapp/App | Windows | Windows 11 | 正式 | 3.7.6 | 全部 | nvue | vue2 | 云端 | HBuilderX |
更多关于uni-app uni.request 断网后启动报错 {"errMsg":"request:fail abort statusCode:-1"}的实战教程也可以访问 https://www.itying.com/category-93-b0.html
我这边使用hellouni进行测试是正常的,请提供复现demo。
更多关于uni-app uni.request 断网后启动报错 {"errMsg":"request:fail abort statusCode:-1"}的实战教程也可以访问 https://www.itying.com/category-93-b0.html
已经找到解决方案 加个定时任务就好了
回复 Reaper: 感谢大佬 问了很多群没有一个回复的,按照你的方法加了个定时器解决了这个问题 不知道为什么会这样
回复 Reaper: 你好,请问定时任务的逻辑是怎样的
警测试 uni.request 是有走的 只不过他一直返回异常 没网 但是网络确定已经恢复
好像真是
这个错误是uni-app在网络异常情况下的常见问题,主要是由于uni.request在网络断开时触发了abort状态导致的。
针对你描述的问题,建议从以下几个方面处理:
-
网络状态检测: 在发起请求前先检查网络状态,可以使用uni.getNetworkType()或uni.onNetworkStatusChange()监听网络变化
-
错误处理优化: 在fail回调中需要明确处理statusCode为-1的情况,建议添加重试机制或提示用户检查网络
-
请求超时设置: 为uni.request添加timeout参数,避免请求长时间挂起
-
请求队列管理: 可以考虑实现请求队列,在网络恢复后重新发送失败的请求
-
针对APP端特有的问题: 可以尝试在manifest.json中配置networkTimeout参数
示例改进代码片段:
uni.getNetworkType({
success: (res) => {
if(res.networkType === 'none'){
// 提示用户无网络
return;
}
// 正常发起请求
uni.request({
timeout: 10000,
// 其他参数...
})
}
})