uni-app多个客户反馈 用久后uni.request无响应 重启无效 需重新安装解决 安卓苹果均现此问题

uni-app多个客户反馈 用久后uni.request无响应 重启无效 需重新安装解决 安卓苹果均现此问题

信息类别 详情
产品分类 uniapp/App
PC开发环境 Windows
PC版本号 7
HBuilderX 正式
HBuilderX版本号 3.2.12
手机系统 Android
手机系统版本号 Android 12
手机厂商 华为
手机机型 华为p20 pro
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX
App下载地址 https://app.kq36.com

操作步骤:

uniapp用久了,uni.request会请求不了,无反应,重启app也无效,必须重新安装才可以,安卓苹果都会

预期结果:

uniapp用久了,uni.request可以正常请求

实际结果:

uniapp用久了,uni.request会请求不了,无反应,重启app也无效,必须重新安装才可以,安卓苹果都会

bug描述:

uniapp用久了,uni.request会请求不了,无反应,重启app也无效,必须重新安装才可以,安卓苹果都会


更多关于uni-app多个客户反馈 用久后uni.request无响应 重启无效 需重新安装解决 安卓苹果均现此问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

94 回复

具体是什么应用呢,能否吧apk发一个出来测试一下

更多关于uni-app多个客户反馈 用久后uni.request无响应 重启无效 需重新安装解决 安卓苹果均现此问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html


回复 小七ing: 下载地址

回复 小七ing: 测试了一下,没有问题,

这个现象可能原因是比较多的,第一,首先得排查是不是因为网络后台的接口问题,第二,检查自己的写法有没有问题,第三,过段时间我再看看能不能复现

回复 小枫叶: 但是卸载重装就可以。。。

回复 小枫叶: 一般不好复现,但是肯定还是存在问题,或者是否有解决方案,清缓存提示重装等

回复 小七ing: 我在想,既然一开始没有问题,那么后面为何会有问题呢,是否通过网络请求向本地缓存存储了呢?

回复 小枫叶: 肯定会缓存,不然怎么登陆账号,会影响请求网络?

回复 小枫叶: 是不是app升级替换,导致旧的没删干净,影响

回复 小枫叶: 客户手机:华为P20 Pro6GB+128GB全网通版

就我已经开发了2个app来看,@DCloud_Android_ST 说的没有错,应该是你内部逻辑的问题,我开发的2个app已经发布将近2年,用户量也还可以,从未出现过你描述的问题,另外,从你的后续的描述来看,很大可能是根本就没有触发到 request,所以你要再自行多测试,应该是其他的问题导致的,把真正的问题找出来,你可以的

应该是onshow没有触发,还不知道怎么导致的,在排查看看

回复 小七ing: request不应该写在onload里面吗

回复 小枫叶: onshow时候列表也要更新,后台有改一下东西,需要定制

回复 小七ing: ok

顶顶顶顶顶顶顶

通过你的描述应该是你内部逻辑导致的。涉及到卸载的问题 基本上都是自身逻辑导致。这个我们无法判定问题原因需要你自己行排查

不要着急甩锅,我是实事求是把实际发出来,uni.request(OBJECT)意思是这个方法逻辑问题?很多地方都用到都没发访问。。。

回复 小七ing: 不是甩锅。request自身请求只会涉及到当前设备网络环境。不会涉及到必须卸载重新安装才能再次request。所以还是需要你自行去验证测试才行。我们无法验证

回复 DCloud_Android_ST: 是个别客户反馈过来,我们是没办法复现

回复 小七ing: 你描述问题指向request,而我们排查了request认为不会出现类似情况。可能是其他逻辑导致的。还是需要具体信息才能判定这事对吧。request有失败回调 提供demo让用户复现看看有没有错误信息。

回复 DCloud_Android_ST: 没有信息回调,感觉没调用request一样,有回调至少转圈会关掉

回复 小七ing: 那你能确认调用了request吗

回复 DCloud_Android_ST: 很多地方调用了,uni.request方法,没有一个可以的

回复 小七ing: 所以只能复现问题然后看下了 现在你说都调用了但并没有真实的数据来支持

回复 DCloud_Android_ST: https://app.kq36.com apk地址

回复 DCloud_Android_ST: 好像是没有进入onshow的方法导致。。。就是onshow方法不触发

回复 DCloud_Android_ST: https://ask.dcloud.net.cn/m/question/136563 早就发现 官方的app也这个问题 就是没人理

就知道甩锅 https://ask.dcloud.net.cn/m/question/136563 早就发现 官方的app也这个问题 就是没人理

顶顶顶顶顶顶顶顶顶顶顶顶

可能是 微信bug 我感觉 , 打开小程序是白屏, 删掉小程序后, 重新打开一直在转圈 加载不出, 体验版 打开调试, 点击重新打开当前页面功能无效, 微信他自己的功能都没用, 而且我再 main.js 第一行 console.log 都打不出来,我觉的是微信bug

客户app复现好几次,我手机没办法复现

回复 小七ing: 我今天遇到小程序删掉 重进都没用

所以 我觉得可能不是uni问题,可能是微信的bug, 微信社区里有人原生小程序开发的也出现过这种问题

回复 小七ing: 我用vconsole使用全屏切换半屏功能,它显示是页面不存在

回复 小七ing: 只能重装微信 才能进去, 醉了

回复 取舍: 之前使用另一个人的微信登录上传了代码, 原来后来调试的结果并不是正确的, 只能在下次复现的时候在调试看看了

这是你的网站测试

差不多全线超时了,怎么不考虑考虑服务器问题 ,都是直连47.110.43.47要不上个CDN试试??? 你这个偶尔性大概率是服务器线路满载了吧,服务器带宽多少啊,实在不行找个运维吧

客户访问webview组件是可以网页访问的,就接口类不行,我们网址是3g.kq36.com

带宽130

而且客户删除app,重新安装就可以正常访问

客户换小程序也很快不会有问题,就app出现问题

回复 小七ing: 你把timeout 调时间长点 默认60000 你调个120000 然后把 firstIpv4 设为true

回复 DCMarvel: 使用的是geoTrust 签发证书,是不是有关系

回复 小七ing: 这我哪儿猜去 sslVerify 设为false 试试

需要用多久会出现这种情况,出现的频率多么

挺多客户反馈,其他没反馈的也可能不用app了,自己测试团队测试不会出现,客户是华为手机

其实 我也遇到过这个问题, 小程序 进入没有请求, 偶尔出现这样的问题, 我怀疑是封装的请求在执行uni.request之前报错了, 但是我看看应该不太会有问题, 除非是 获取缓存的api拿到的东西有问题 导致报错, 之后 把小程序 删除 重新进入就没有问题了, 所以怀疑是缓存的问题, 但是 出现问题频率很小, 没有仔细排查

对,我小程序也出现过,概率很小

客户量多了,问题就会呈现出来

楼主 删除app重新安装 估计也是缓存有问题

可能缓存导致的,onshow方法不执行

app我已经用了两天了,没出现问题

我们天天用也没出问题,但是就是有客户反馈,安卓手机华为p20

可能要触发某些行为才能复现,比较难观察

回复 小七ing: 难搞

估计是缓存问题!我发现这缓存!有时会出现无缘无故给删除了,导致后面要根据缓存数据来请求的失败

不好复现

的确不好复现,也没找到原因

好像我也遇到过 但是从某一次重新打包后就没有出现过了

不好复现

回复 小七ing: 是的 不过目前没有出现了哈

回复 z***@gmail.com: 我们自己也没出现,客户出现的

顶顶顶顶顶顶顶

顶顶顶

回复 小七ing: 你的问题还是需要你们先确认问题原因。否则我们这边也很难处理该问题。问题现在没有明确性无法处理。

又有客户反馈uni.request执行不了,只能删除重新安装

webview可以访问,就是接口不能访问

顶顶顶顶顶顶顶

我现在刚好遇到了

uni.request 在安卓端,会无法触发,小程序模拟器无问题。安卓端我是这样测试,我把uni.request夹在console.log中间,放onLoad()来运行,结果console.log触发了,uni.request死活没触发,服务器也没收到https请求

而且是偶尔性的吧,很难触发这个问题,好几个客户反馈

不行只能自己开发原生插件请求网络了

我遇到一个 手机端的 H5网页调用不了uni.request ,不过只有百度浏览器调用报错,其他浏览器可以 https://www.hhjm168.com/ 网页地址 但是在招商加盟的那里提交信息请求又能成功
贴个基础请求代码
request(url, method = ‘GET’, data = {}, success, fail) {
return new Promise((resolve, reject) => {
if (isShowLoad) {
uni.showLoading({
title: “加载中…”,
mask: true
})
}
uni.request({
method: method,
url: url,
data: data,
header:{‘Content-Type’:‘application/x-www-form-urlencoded’},
dataType:“json”,
success: (res) => {
if(this.checkResponse(res,url)){
success(res.data);
}else{
fail(res);
}

        },  
        fail: (err) => {  
            uni.showModal({  
                title: '提示',  
                content: JSON.stringify(err),  
                showCancel: false,  
            });  
            fail(err);  
        },  
        complete: () => {   
            try {  
                setTimeout(()=>{uni.hideLoading();},300)  

            } catch (e) {  
                //TODO handle the exception  
            }  

        }  
    })  
})  

}


请检查下服务器,和证书

提前说元旦快乐

元旦快乐

在不好复现排查情况下,可以考虑把认为可能存在问题的 uni.request() 替换成其它方案的接口请求,比如flyio。当然这个替换成本在有一些项目上可能会有不少工作量。替换后再看看用户使用情况。

哈哈哈哈哈 哈哈哈哈

噢噢噢噢噢噢噢噢

请问解决了吗? 遇到同样的问题

这么说的话 我好像也遇到这种情况 某段时间 某个用户反馈项目用不了 没请求

运行到手机遇见了同样的问题,仿佛uni.request不存在。昨天还能用,那一块的代码没有动过。运行到内置浏览器没问题。

一样的问题,loading都打开了,request仿佛没有一样。

顶顶顶

已经解决没有客户反馈此问题

如何解决的

回复 2***@qq.com: 请求不要证书验证

你是怎么解决的,可以告诉我一下吗

我最近也遇到这种情况了,就是uni.request没有触发,逻辑代码没有变,就云打包后,在安卓机上不触发请求,切换回之前历史打的包(代码逻辑一样)就可以,你的问题现在解决了吗
如下图,正常情况如果调用了,就算失败了,那也应该进fail回调的,现在一直处于请求前的加载中

2023 年了好像还没解决 我已经知道如何复现这个BUG 各位可以自行试试 https://ask.dcloud.net.cn/question/164730

这是一个典型的网络请求累积问题,通常由以下原因导致:

  1. 连接池耗尽:uni.request底层使用系统网络库,长时间运行后可能出现连接未正确释放,导致可用连接耗尽。

  2. 内存泄漏:请求相关的回调函数或上下文未及时清理,随着时间推移积累导致内存不足。

  3. 缓存机制异常:uni-app的网络层缓存可能出现异常,积累无效数据。

解决方案:

代码层面优化:

// 1. 确保每个请求都有超时设置
uni.request({
    url: '...',
    timeout: 10000, // 10秒超时
    success() {},
    fail() {},
    complete() {
        // 确保资源释放
    }
})

// 2. 使用请求拦截器统一管理
let requestCount = 0
const MAX_REQUEST = 10 // 限制并发请求数

uni.addInterceptor('request', {
    invoke(args) {
        if (requestCount >= MAX_REQUEST) {
            // 队列管理或拒绝新请求
            return false
        }
        requestCount++
    },
    success() {
        requestCount--
    },
    fail() {
        requestCount--
    }
})

// 3. 定期清理网络缓存
setInterval(() => {
    uni.clearStorageSync() // 谨慎使用,或针对性清理
}, 24 * 60 * 60 * 1000) // 每天清理一次

配置优化:

  • 在manifest.json中配置网络超时时间
  • 检查是否使用了不合适的缓存策略
  • 考虑使用uni.connectSocket替代频繁的短连接请求

临时解决方案: 在应用启动时添加网络重置逻辑:

onLaunch() {
    // 应用启动时尝试重置网络状态
    this.resetNetworkState()
}

methods: {
    resetNetworkState() {
        // 清理可能存在的异常请求
        uni.stopPullDownRefresh()
        // 其他网络相关状态重置
    }
}
回到顶部