vue兼容低版本谷歌浏览器

1,210 阅读3分钟

做项目遇到了一些不轻易升级chrome版本的客户,他们还用着甚至40版本的chrome,所以今天就来说说为了兼容低版本的chrome做了哪些努力。

主要是两件事情:

(1)将自己代码转为es5版本
(2)将node_modules中引用的插件,有需要的部分转为es5版本

截至今天2024年1月4日谷歌浏览器最新版本是120版本的,如下

image.png

但我今天开发遇到了客户反馈,在他使用的54版本的浏览器上无法运行项目,需要兼容一下。知道这个我有点想🐎上帝但是我不能,只能老老实实去做兼容。

首先正常流程当然是排查定位bug,现象是控制台报错,报错内容:"Uncaught SyntaxError: Unexpected token . " ,并且浏览器页面空白,

1704333151164_1E10FCDC-B0F7-410d-BB67-64C0EA1969D0.png

翻译 Uncaught SyntaxError为 意外的标记“.”

根据网上的大佬描述,但凡是出现Uncaught SyntaxError相关的报错就基本上可以确定是js语法导致的,于是就要想到可能是低版本谷歌浏览器不兼容某些es6语法

然后你知道了大概原因,但是并不一定是具体原因,咱们得就事论事,于是仔细扒拉控制台报错信息发现这个是由于引入的第三方依赖vxe-table中的es6没有转换的缘故,仔细看下面:

image.png

也就是说不是我自己写的东西导致的,我自己写的我之前处理过一次低版本兼容的转换了,是通过这里处理的,下面这里配置可以将自己写的js或者ts兼容到低版本es5

image.png

根据网上文档的配置我在这里进行了处理,将node_modules中引用的插件,有需要的部分转为es5版本(因为默认是不会将插件里面的es6转为es5的)

image.png

这样一处理我以为就可以了,没想到并没有(前面的内容可能也有一定作用,有可能没有哈哈哈)。于是,继续兼容,

首先转自己写的,配置自己的代码我们需要用到一个新的插件babel-polyfill

1、下载依赖:npm install --save @babel/polyfill 或者 yarn add @babel/polyfil

2、在你的项目入口文件的顶部添加以下代码:import '@babel/polyfill';

image.png

这样一处理,一下子就可以兼容到60版本的浏览器了,之前是不可以的,但是距离54版本的还是不行(客户真他娘的神奇,用这么低版本的浏览器),没办法客户是上帝,继续兼容吧。要不就浏览器做提示让客户升级浏览器。。

于是重点来了,我使用了browserslist去处理,这里有他的browserslist官方文档,根据文档我采用了.browserslistrc文件去做处理,参考:

image.png

我就简单的在项目中原有的这个文件中加了一行 “chrome >= 35” 就彻底解决了这个问题

image.png

项目就可以在54版本谷歌浏览器运行了,效果如下:

1704352010518_3794D636-C227-4811-9C99-2E2A28919246.png

总结:刺激,这个玩意搞了我好久时间,但是挺有成就感的。但注意如果再往下的低版本可能还是会有问题,但我目前只想先解决客户的54版本这个问题,而且我想说,为什么要去用这么低版本的浏览器啊!!!!

补充:

1704335323716_158B9228-BC88-4498-9E30-53614C7CB974.png