赞
踩
摘要:
上周六下午16点左右,公司研发群中扔来一张bug截图。当天21点,群里又扔来bug截图,研发团队二话不说开始查找bug如何复现。22点20分左右,我终于复现了bug。随后就是看源码、搜索、跳坑、爬坑,周日同其他研发小伙伴一样,又是奉献了一天,那个表单规则功能也被搁置。现在,我该写一篇笔记,记录一下那两天发生的狗血过程了…
时间倒退到上周六下午16点23分,产品在公司研发群扔来一张bug截图。如图:周六下午16点多公司群内发来一张bug截图.png
随即我在项目中进行了搜索,初步定位到了提示信息所在位置。如图:搜索源码找到了提示信息所在位置.png
此时第一反应就是:this.data.poster.qrCode
没值呗,接口返回的锅。然后我就没管这事儿了,继续写那个表单规则去了,但事情并没有结束!当晚21点左右,群里又在提获取头像失败的bug。如图:当晚21点左右群里又在提获取头像失败的bug.png
一搜索提示,又是前端的提示。如图:在源码中搜索获取头像失败并定位代码.png
要想解决问题,必须要先知道如何复现或是找到引起bug的代码。从上面的截图来看,此处是调用了微信小程序中的wx.downloadFile方法下载用户头像。请求进了fail
,一般只有两种情况:
success
中的代码异常导致报错,此时会进入fail
;fail
。于是,艺灵我先是看了下success
中的代码,乍眼一看并没有发现异常,里面又是两个wx.downloadFile
,全部请求成功后才进行画布的操作。然后我把目标锁在了方案二,即:假设此请求不成功的情况。那么此时的url
链接是存在问题的。即:originPoster.headimgurl
异常。官方文档说仅支持https
的get
请求,在微信小程序开发者工具中进行调试发现都符合要求,而且也不报“获取头像失败”的提示!这就难搞了啊,bug无法复现,咋解决问题呢?
这时看了下群里的聊天,发现他小伙伴也说无法复现bug。但是我们老板张总却能复现此bug!!!我不禁一脸懵逼了起来,心想:这都是什么骚操作才会触发了bug???
一晃又是1个小时,此时已经22点多了,还是没有结果。然后我想了想以往的经历,尝试了一下非常规操作,结果bug复现了!!!经过进一步的尝试,已经可以大概率的触发此bug了!激动的我直接在群里截图报喜!如图:当晚22点24分我终于复现了bug.png
你们是不是想知道我是如何复现的?先卖个关子,后面放答案。下面继续讲述爬坑经历,不想看过程的看官拉到下面看答案。
解决还是有点困难的,毕竟刚才是非常规操作导致bug复现。如果是正常操作,要怎么解决呢?此时已经23点了,一时也没有思路,于是我便洗洗睡觉了。
次日再看群消息时发现:@鸿恩大神在昨晚23:30分发消息说百分百复现bug了!如图:昨晚23点30分群消息中说百分百复现bug.png 激动的我立马尝试了一下,结果真是百分百复现啊!什么操作呢?安卓手机关闭微信的存储空间 即可,此时再点分享百分百弹窗!然后,我就被带到了这个误区里面,一直折腾到下午。最后我自己都感觉到这是个误区了,后来便放弃了这个骚操作。
刚刚说了,@鸿恩大神在群里提到关闭微信的存储空间可以百分百复现bug。于是我就顺着产品的思路:“前端去验证有没有授权”。然后在微信官方文档·小程序中进行了搜索,结果找到了一个接口scope.writePhotosAlbum。官方的描述是:“保存到相册”。然后我就开始摸索这个scope.writePhotosAlbum
了,事实证明:我再次掉进坑中!
其实判断这个scope.writePhotosAlbum
也挺坑的,只在用户未授权的情况下显示一次,当用户拒绝后,就不再弹窗提醒了。然后我花了很长时间在这个坑上面,当时还在纳闷:怎么一会儿有弹窗一会儿又没弹窗,缓存吗???关于如何正确使用scope.writePhotosAlbum
,这里参考一篇网络文章《微信小程序授权保存到相册功能》,亲测有效!
当我把代码放项目里成功跑起来后,天真的认为bug已经得到了解决!于是,关闭了系统的存储空间进行测试结果发现翻车了!!!弹窗竟然存在!我瞬间凌乱了…
不知过了多久,我再仔细的审题了一下,这才意识到:**保存到相册跟系统的存储空间完全是两个概念!**然后我果断放弃检测scope.writePhotosAlbum
这个方法了。
2018年的时候,艺灵我也折腾过一翻微信小程序,当时也写了一系列的踩坑文章。于是我进行了搜索,找到了几篇相关文章:
但这些文章中并没有建议使用wx.downloadFile
来下载图片,然后我觉得这里应该是当时遇到了坑。所以,我把现项目中的wx.downloadFile
全换成了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。