- 小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
缘起
自从项目升级到webpack5后,没有几天消停日子,各种问题蜂拥而至。今天总算有点时间写下经历。
背景
线上设备有web端和平板,平板使用的安卓系统webview,而在一个老型号的平板上的webview版本是42,这可就要了命了。42的老版webview只支持es5,所以每次打包js,都要把目标版本设为es5,以兼容老板子。
排查
如图
打开js bundle包,搜索箭头函数 1000多条...,此时才发现,肯定是输出有问题,此时就要查看webpack配置和babel设置的时候了,经过几番寻找,最终发现是webpack输出配置的的问题。
解决
根据输出的情况,在网上搜了下类似的情况,发现应该跟webpack5的默认输出配置有关。继续测试 ,发现应该是target配置的问题,改为['web', 'es5'],再次输出bundle!
果然可以,箭头函数只剩165个了。但是还有问题,有些npm包还是未转成es5,问题还得继续研究...
总结
webpack4时代相安无事,到了webpack5,output的默认输出改为es6,刚开始没有发现,因为老板子很少了,web改动又没有涉及到平板端,所以测试也漏掉了,所以重点是自动化测试要提上日程了,好多改动因为项目大,涉及范围广,没法用手工全部冒烟测试走一遍,导致线上问题无法解决在襁褓之中,大大增加了上线出问题的风险。