w***@qq.com
w***@qq.com
  • 发布:2021-04-05 20:07
  • 更新:2024-03-12 15:32
  • 阅读:2151

【报Bug】APP启动完成瞬间 快速切换底部tab假死BUG(能复现有代码demo)

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win10

HBuilderX类型: 正式

HBuilderX版本号: 3.1.7

手机系统: Android

手机系统版本号: Android 11

手机厂商: 小米

手机机型: 小米9

页面类型: nvue

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

代码在附件里

操作步骤:

我两三个不同型号小米手机都测试了同样可以复现,
我找了一个同行用纯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是我录的视频

2021-04-05 20:07 负责人:DCloud_UNI_GSQ 分享
已邀请:
w***@qq.com

w***@qq.com (作者)

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

惊天

惊天 - uni 开发

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

DCloud_Android_ST

DCloud_Android_ST

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

  • 999

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

    2021-04-08 12:58

  • DCloud_Android_ST

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

    2021-04-08 13:59

  • w***@qq.com (作者)

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

    2021-04-08 17:51

  • w***@qq.com (作者)

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

    2022-04-23 09:43

w***@qq.com

w***@qq.com (作者)

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

w***@qq.com

w***@qq.com (作者)

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

  • DCloud_Android_ST

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

    2021-04-08 18:26

  • w***@qq.com (作者)

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

    2021-04-08 19:19

  • DCloud_Android_ST

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

    2021-04-08 19:24

  • 4***@qq.com

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

    2021-06-11 11:06

  • guxin

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

    2021-06-23 23:30

  • corsun

    2022-04-11 还是不行

    2022-04-11 16:16

二七

二七 - 1111

老哥 我也是这个问题 现在解决了吗?

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

二七

二七 - 1111

我试了一下 好像是将请求的数据或者是$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

青阳_1900

青阳_1900

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

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

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

<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>
1***@qq.com

1***@qq.com

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

  • w***@qq.com (作者)

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

    2022-01-14 16:50

w***@qq.com

w***@qq.com (作者)

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

honeyChen

honeyChen

最近又出现这个问题了,请问怎么解决啊,能不能不要闹,用户使用的好好的突然就白屏了,开玩笑呢嘛不是!

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  
t***@qq.com

t***@qq.com

tab切换报错或者假死的,试一试在开发工具登录下你们的账户。然后退出开发工具重新进入。

发现好几次都是这样的。解决了。

冰_峰

冰_峰

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

s***@163.com

s***@163.com

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

i***@siiri.cn

i***@siiri.cn

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

码界封杀阿凯

码界封杀阿凯 - are you ok

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

Absorbed66c

Absorbed66c - 码农一枚

还没解决吗

[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)

要回复问题请先登录注册