背景
QA在5.18发现了一个bug:在站内 iOS APP内访问第一次活动页,会出现三四次白屏反复横跳的问题,然后页面可以正常展示;之前访问过活动页,再打开是好的。
问题定位
使用二分查找,尝试找到没有问题的版本。
在beta环境,多次发版历史版本后,定位到了在某一版本(称为n)及之后开始出现这个问题。
review对这一版的代码,尝试去掉有问题的风险点后,发到测试环境问题依旧。
也就是说问题和这一版本的代码无关,那么问题出在哪里呢?
问题不出在业务代码里,就是出在引用的依赖里了。
之前n-1的版本构建出来是没有问题的,对n-1版本重新沟通,发布测试环境发现有问题。OK!明确定位问题出在引用的包更新里了。
在这之前,怀疑问题原因可能是业务代码在站内有报错;或者bridge有报错,导致白屏和横跳。
问题解决
虽然项目有package-lock.json文件,为什么依赖还是悄悄更新了呢?发现项目中package.json里的一些依赖版本号是latest,因此始终安装的最新的。
同时项目中package-lock.json和yarn.lock都存在混用,但是gitlab-ci build时使用的是package-lock.json,里面一部分包没有更新,后续需要避免混用。
继续二分查找定位是哪个依赖的问题,将该依赖锁死版本后,继续发布beta环境验证无误后上线。 并把问题反馈给对应的包的负责人,至此问题结束。
关于npm包的使用规范
- 每次在项目目录下执行npm i ,如果没有更新package.json,那么package-lock.json也不会更新
- 不要手动更新package-lock.json
- 每次更新npm 包,package-lock.json会选择符合配置条件的最新的包
- 不要使用latest,有风险