uni-app APP启动完成瞬间 快速切换底部tab假死BUG(能复现有代码demo)

uni-app APP启动完成瞬间 快速切换底部tab假死BUG(能复现有代码demo)

示例代码:

代码在附件里

操作步骤:

我两三个不同型号小米手机都测试了同样可以复现,
我找了一个同行用纯Nvue写的APP(已上线),启动瞬间快速切换也会出现这种BUG,
复现步骤就是APP启动渲染完成瞬间(1秒内) 两个手指快速频繁点击底部导航tab1  tab2,如果没复现,请多次重启快速点击测试,

复现前提
比如 首页(tabBar1)是nvue文件,要跳转的tabBar2也是nvue文件,这样就会出现这个BUG(我附件里代码就是这个)

比如2:首页是vue文件,其他要跳转的tabBar是nvue文件也会出现这个BUG

但是 如果首页是nvue页面,要跳转的tabBar页面是vue页面,是不会出现这个问题的。

我还录了个视频,这里好像

预期结果:

正常

实际结果:

单击事件假死,底部tab点击无反应

bug描述:

BUG描述:(APP启动后(渲染完毕)瞬间快速来回频繁切换两个tab(1秒内),会假死单击事件变失效)但是启动后超过1秒以上再点就正常了也不会出现。

真机调试模式,只要出现这个问题,tab单击就没反应了,而且IDE报这个错误。
19:44:17.651 [JS Framework] Failed to execute the callback function:
19:44:17.673 TypeError: Cannot read property '__call_hook' of undefined

没点出来可能您手速不够快,多重复启动 多试几次,我手快目前基本每次都能点出来,而且这个问题有时候会很容易出现,客户给我的反馈就是点击后页面不跳转(假死)说明已经不用压力测试就很容易复现了,已经影响到我线上客户体验

附件 BUG_demo.zip是我BUG复现的demo代码, 复现步骤.zip是我录的视频

表格

信息项
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 win10
HBuilderX类型 正式
HBuilderX版本号 3.1.7
手机系统 Android
手机系统版本号 Android 11
手机厂商 小米
手机机型 小米9
页面类型 nvue
打包方式 云端
项目创建方式 HBuilderX

示例图片

BUG_demo.zip

复现步骤.zip


更多关于uni-app APP启动完成瞬间 快速切换底部tab假死BUG(能复现有代码demo)的实战教程也可以访问 https://www.itying.com/category-93-b0.html

28 回复

请问多久处理? 我一直再等着啊,,,

更多关于uni-app APP启动完成瞬间 快速切换底部tab假死BUG(能复现有代码demo)的实战教程也可以访问 https://www.itying.com/category-93-b0.html


简单点 进来加个加载状态 不让点击就行了 哈哈

设置一下 fast启动 再试试 https://ask.dcloud.net.cn/article/36749

楼主就是fast启动,这个问题nvue一直存在,不算什么新问题,你们没关注到可能。

回复 efeiwork: 示例你看了吗 怎么就言之凿凿的说是fast? 或者你与楼主认识 示例没写而已。。。。。

回复 DCloud_Android_ST: 刚才试了下fast模式 还是可以点死,,,这块请问你们会解决吗? 如果没法解决 我就只能先把页面改成vue页面了,,现在APP着急上线 很急

回复 DCloud_Android_ST: 请问这个问题可以抽空修复下嘛 虽然不是啥大问题 但对于完美主义者,可能会因为这一个问题去放弃uniapp

我又试了下,设置fast模式,(标准运行基座) 然后手工删除手机里的 重新同步到手机,然后启动快速切换,,还是会出现这个问题,,

这里真的很着急挨,,,作为快速开发框架,,用上nvue性能确实提高了,,实在不想因为这一点原因换框架挨,,官方大大能给个方向吗

原因就是内核初始化还未彻底完成。需要一定时间的等待才行。我们这边改为fast还没复现。应该是可以优化;不过不会短时间就上线的。

回复 DCloud_Android_ST: 改成fast 我直接用这个demo测试 也一样可以点出来的 和之前没啥区别,,那还是希望你们后续升级下这里把,比如升级成 未初始化完成时候 点击不管用 但是别让他假死,目前情况是点的假死后 不重启是不会恢复的,

回复 w***@qq.com:了解

回复 DCloud_Android_ST: 请问这个问题解决了吗?

回复 DCloud_Android_ST: 什么时候升级恢复啊。。急死。。。

2022-04-11 还是不行

老哥 我也是这个问题 现在解决了吗?
reportJSException >>>> exception function:WEEX_CALL_JAVASCRIPT, exception:JavaScript execute error!Uncaught TypeError: Cannot read property ‘call_hook’ of undefined 11:04:28.113 [JS Framework] Failed to execute the callback function: 11:04:28.133 TypeError: Cannot read property ‘__call_hook’ of undefined 11:04:28.153 [JS Framework] Failed to execute the callback function: 11:04:28.173 TypeError: Cannot read property ‘call_hook’ of undefined 11:04:28.193 [JS Framework] Failed to execute the callback function: 11:04:28.213 TypeError: Cannot read property ‘__call_hook’ of undefined

我试了一下 好像是将请求的数据或者是$refs还没创建的时候 在 onload里面调用导致的 我在onReady里面调用后快速切换 会有白屏报错 但是不会出现连续的 _call_hook 报错 切换页面也不会出现假死状态
10:58:10.710 TypeError: Cannot read property ‘__call_hook’ of undefined 10:58:10.730 reportJSException >>>> exception function:WEEX_CALL_JAVASCRIPT, exception:JavaScript execute error!Uncaught TypeError: Cannot read property ‘__call_hook’ of undefined

给个规避方案,目前项目中使用的,思路就是用时间换切换性能

配置开屏页面手动关闭
App.vue 中通过 uni.switchTab 顺序加载其余tab,最终切回第一个 tab
完后关闭开屏页面

这种方式修改后切换明显流畅,尤其是安卓下

<script> import Vue from 'vue' Vue.config.productionTip = false export default Vue.extend({ mpType: 'app', async onLaunch() { setTimeout(() => plus.navigator.closeSplashscreen(), 5000) // 页面加载最多延迟5秒,防止进不去app console.log('App onLaunch start') // 预加载某些公共页面 uni.preloadPage({ url: '/pages/popup/index' }) uni.preloadPage({ url: '/pages/cross/index' }) uni.onTabBarMidButtonTap(() => uni.navigateTo({ url: '/pages/cross/index' })) // 加载某些复杂的tab页面 await uni.switchTab({ url: '/pages/explore/index' }) // 完毕后切换回首页 await uni.switchTab({ url: '/pages/works/index' }) // 关闭开屏页 plus.navigator.closeSplashscreen() console.log(`App onLaunch: ${Date.now() - start}ms`) } }) </script>

2021年11月23,依旧有这个问题。 mac:3.2.15.20211120 版本

我都放弃了哈哈, 改用纯nvue编译把,,没这个问题

nvue页面还是有这个问题,,,

最近又出现这个问题了,请问怎么解决啊,能不能不要闹,用户使用的好好的突然就白屏了,开玩笑呢嘛不是! 10:16:00.105 ReferenceError: require is not defined
10:16:02.311 [JS Framework] Failed to execute the callback function:
TypeError: Cannot read property ‘__call_hook’ of undefined
10:16:02.326 reportJSException >>>> exception function:WEEX_CALL_JAVASCRIPT, exception:JavaScript execute error!Uncaught TypeError: Cannot read property ‘__call_hook’ of undefined
at (uni-jsframework.js:1:190503)
at (uni-jsframework.js:1:190768)
at ds (uni-jsframework.js:1:124907)
at switchTab (uni-jsframework.js:1:189911)
at (uni-jsframework.js:1:93485)
at W (uni-jsframework.js:1:57122)
at zh.<computed>.Vh.<computed> (uni-jsframework.js:1:281249)
at (uni-jsframework.js:1:288942)
at (uni-jsframework.js:1:129525)
at CallbackManager.consume (uni-jsframework.js:1:1414)
10:16:03.877 [JS Framework] Failed to execute the callback function:
TypeError: Cannot read property ‘__call_hook’ of undefined

tab切换报错或者假死的,试一试在开发工具登录下你们的账户。然后退出开发工具重新进入。
发现好几次都是这样的。解决了。

我也一直有相同问题,不知道如何解决~

官方是没有能力解决吗?怪不得天天被吐槽,每次更新高点无关紧要的破玩意儿,这么大的问题没有解决,拖两年?祝早完蛋~~~

2023-11-11,官方还是没有修复

2023-12-22 官方依然没有修复

还没解决吗
[JS Framework] Failed to execute the callback function: TypeError: Cannot read property ‘__call_hook’ of undefined 15:27:04.503 reportJSException >>>> exception function:WEEX_CALL_JAVASCRIPT, exception:JavaScript execute error!Uncaught TypeError: Cannot read property ‘__call_hook’ of undefined at (uni-jsframework.js:1:195501) at (uni-jsframework.js:1:195766) at vs (uni-jsframework.js:1:126153) at switchTab (uni-jsframework.js:1:194909) at (uni-jsframework.js:1:94701) at Y (uni-jsframework.js:1:57721) at av.<computed>.sv.<computed> (uni-jsframework.js:1:286332) at (uni-jsframework.js:1:294055) at (uni-jsframework.js:1:130838) at CallbackManager.consume (uni-jsframework.js:1:1414)

回到顶部