收藏
回答

安卓出现「hideToast:fail:toast can't be found」导致小程序卡死?

这是一个近期频繁遇到的问题


相关问题

https://developers.weixin.qq.com/community/develop/doc/0002acf1388980b77b0a21f0e56000?highLine=hideToast%253Afail%253Atoast%2520can%27t%2520be%2520found

https://developers.weixin.qq.com/community/develop/doc/0008e440e6cb58d4050a4b7e451c00?highLine=hideToast%253Afail%253Atoast%2520can%27t%2520be%2520found


错误代码

Uncaught (in promise) thirdScriptError
{"errMsg":"hideToast:fail:toast can't be found"}
Object


触发设备

安卓真机,开发者工具,iOS 正常


触发概率

100%触发


代码:无

上传机型信息:无,随便找个安卓都可以


什么时候出现:

这几天,因为已上线的小程序都被影响到了,而且这些小程序以前都是正常的


分析原因

很简单,就是代码里 toast.hide 执行的时候发现没有Toast 可以关闭,所以就出错了。然后由于现在是 promise 错误并且没有拦截。所以导致后续代码无法执行。

可以说一半是开发者的问题,一半是官方的问题。

开发者的问题就是,没有 toast 开一个,关一个造成了问题。但是说实话,toast 设计成单例肯定会有这样的问题,因为我们根本不知道用户在什么地方触发了 toast,真的有可能会出现很多 toast。

官方的问题就是,这次基础库改动了,导致如果不一对一关闭,就会卡死用户手机,这个很蛋疼,因为再怎么样都不应该影响用户其他操作,特别是这种情况



最后一次编辑于  2020-03-13
回答关注问题邀请回答
收藏

2 个回答

  • Hasaki
    Hasaki
    2020-05-14

    我之前因为promise.then(wx.hideToast) 真机下会出错

    改成 wx.hideToast() 就好了

    在真机环境可能会接受除 success fail error 等别的参数

    2020-05-14
    有用
    回复
  • 疯狂的小辣椒
    疯狂的小辣椒
    2020-03-11

    你好,promise reject 的异常上报,目前是  Error 类型才会上报,是否 reject 了一个 new Error?

    2020-03-11
    有用
    回复 6
    • 陈式坚
      陈式坚
      2020-03-11
      不太明白,只能说说其他背景
      1. 上图的截图是真机调试的,在真机上直接卡死连 vconsole 都点击不了,但是可以点击tabbar,点击 tabbar 后的页面也无法加载成功


      2. 小程序有多处调用 toast,但是不太确定是哪个函数触发,怀疑的一个函数中,不是 Promise 对象,仅是普通函数。
      但是函数开始的会主动 hideToast 一次,确保用户不会被其他情况下触发的 toast 挡住。
      调用方式也是直接调用 hideToast


      3. 这个问题之前完全没有遇到过,是最近用户上报的。自己通过安卓机测试也触发了,而且不止一个小程序
      2020-03-11
      2
      回复
    • 陈式坚
      陈式坚
      2020-03-13
      这个会纳入bug吗?纳入的话,什么时候修复?如果不纳入,要怎么避免这个问题?提示没关系,就是不影响用户使用
      2020-03-13
      2
      回复
    • G.Y
      G.Y
      2020-03-30回复陈式坚
      请问楼主是怎么解决的,貌似报错后导致代码部分不支持,出现bug
      2020-03-30
      回复
    • 陈式坚
      陈式坚
      2020-04-03回复G.Y
      没有解决一直在等官方承认这个问题... 老代码根本没精力去做兼容
      2020-04-03
      回复
    • G.Y
      G.Y
      2020-04-03回复陈式坚
      我之前遇到了一个hideloading类似的错误,toast not found。大概意思就是说我去hideloading时候发现没有sholoading,我就定义了一个变量,showloading调用时候变量为true,再调用hideloading时候先判断变量是否为true, 为true时候才会执行hideloading. 我估计你是同样的道理。你可以试试
      2020-04-03
      回复
    查看更多(1)
登录 后发表内容
问题标签