悲惨经历:浙政钉 iPhone 手机访问页面空白,刷新后正常显示 问题排查(安卓、手机一切正常)

现象如标题所讲,很诡异,到了客户现场先分析环境情况、问题可能出现的原因(页面是前端实习生写的,但这种诡异问题也就只能交由老同志来解决啦……)

做的看似与问题不相干的事

同事提到昨天改的 logo 在浙政钉环境下还是老样子,然后登录页的图片也出不来(我试了一下还真是……)

电脑上打开应用,发现控制台有报错,图片加载失败,想着 iPhone 手机访问空白这个问题暂时也没有头绪,顺手把这个报错解决了吧

  • 图片是公司服务器上的图片,由于之前某一阶段电信安全升级?把公司 https 默认的 443 端口屏蔽掉了,导致外网无法访问图片(公司局域网是可以的,所以开发过程中一直没有发现这一问题)

想着先让这个问题上线,让同事发布了一个版本,发现线上还是那样……复制出来地址浏览器打开,发现还是这样,一看网址?咋不是我们公司 ip???

然后问了下负责政务云这块任务的同事是不是配置的地址配错了(昨天政务云资源刚申请下来,同事还在部署环境,还在调试……)

  • 结果发现他直接在政务云上布了一套,配上了浙政钉,然后用户通过浙政钉进入页面(不是我让另一个同事发布的那个环境,那个环境“被停用”了)

然后让同事打包发给他,线上替换一下就接着分析问题了

  • 我只是顺手改了下图片加载地址,这个东西跟我现在在研究的问题没有多大关系,所以就暂且不管啦,他发布掉就好了

问题分析

是不是代码上有 iOS 不兼容的代码引起的

我从页面加载开始梳理了一遍相关代码文件,并未发现有什么可疑的代码会引起兼容性问题

排查是不是 iOS 浙政钉环境的原因

想到将浙政钉里的应用链接复制出来,看在手机浏览器里是否有此问题(排查是不是浙政钉环境的原因),结果发现还是有这个问题,那就不是浙政钉环境的原因咯……就是 iOS 系统的兼容问题

排查解决方向

尝试错误捕获

既然上述的几种方向都没法在排查下去,看能不能通过全局 API 捕获到什么错误,从而从错误里找到突破点

vue 有全局错误捕获相关的 API(Vue.config.errorHandler),想看看 uniapp 文档里是不是也有,看能不能看到什么报错信息

  • 可惜没找到(或者说 uniapp 就没有相关 API?)

搭建临时环境(专有钉钉正好在维护,用钉钉配局域网地址调试)

屋漏偏逢连夜雨

(专有钉钉近期在维护,还没法用专有钉钉进行调试:专有钉钉是最接近浙政钉环境的)

请添加图片描述

后来同事说要不在钉钉上配置一下拿来调试

试试就试试咯,也总比每次改完发版本来的强呀……

前提:需要同一局域网下,关闭 windows 防火墙,用手机访问 ipv4 地址,能够访问通则用钉钉配置该应用到工作台,进行调试(通过钉钉打开则具备了钉钉环境,怎么配置应用台可自行百度,不作展开)

请添加图片描述

请添加图片描述

新问题:钉钉环境没有控制台可以调试怎么办?

  • 思路:结合 JSON.stringfy() 将想要 console.log 展示的内容序列化后用弹窗(uni.showModal(...))展示

环境配通后让同为 iOS 系统同样出现过问题的同事打开看看,发现没有问题……可以直接打开……

啊这……

转折

最后想在 iOS 系统下再仔细看看错误出现的过程,看能不能从现象捕捉到什么端倪,从而找到解决问题的切入点,发现本文所要解决的问题居然可以了……?

我改了什么?图片地址更正了……他就行了?

图片加载不出来也不会影响页面渲染呀,图片空着下面的内容还是会出来的呀……

  • 推测会不会是因为图片是动态引入,引入的时候找不到图片,报错,影响后续代码运行了……
  • 反正我安卓手机图片没出来,输入框之类的还是有的(苹果又坑我?继日期 - 连接之后的又一新坑……)

看来习惯养好点还是有好处的呀,有时候神不知鬼不觉得就把bug 解决了,或者直接跳过了

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐