让前端飞Web前端之路

Babel编译结果和ios8,9/IE低版本的兼容性问题

2018-08-30  本文已影响39人  liuuuuuu

前言

  最近做了一个关于校友会的公众号的项目,牵扯到一些移动端的H5,技术栈使用:webpack+scss+babel,在项目结束的时候,出现了一系列兼容ios8,9IE低版本的问题,下面我将详细的把遇到的问题和解决问题的方法挨着记录下来。

Object.assign 方法报错:undefined' is not a function (evaluating 'Object.assign(…)

错误1:Object.assign方法不识别问题

  对于以上报错,请教了某大神后,找到了一个Github上的文档:直接使用Object.assign 有兼容性问题(Android5,iOS8.4),在本文中我们找到一个解决问题的方向,那就是安装一个npm库:babel-plugin-transform-object-assign,在我们安装了该库之后,并且在babel配置文件中加一行配置:"plugins": ["transform-object-assign"],最后我们再次编译代码,就不会再报关于Object.assign的错误了。

Symbol报错:can't find variable: Symbol

错误2:can't find variable: Symbol

  对于上述的Symbol问题,我们只到ES6引进了Symbol,但是目前浏览器支持不是特别好,所以js中一旦出现了Symbol,一般都会报错,所以对于这个问题,经过问度娘之后,我们发现一般这个问题没办法直接解决,最好的办法就是不用一些特定的ES6语法,因为某些ES6语法生成ES5的时候回生成Symbol,所以我们暂时只有不用哪些特定的语法,在我的代码中,我发现了我代码中出现Symbol是因为我使用了一个迭代语法for of,所以我果断将其换成了for in,然后在生成代码中就没有了Symbol了,大功告成!

后序

  对于高版本的iosIE,运行都没问题,就是用iphone44s等低版本ios系统和低版本的IE时就会出现以上代码语法不识别的报错,所以为了兼容低版本的iosIE,我们应当避免使用类似ES6语法。当然了,如果是自己的项目或者管理者后台项目,我们就没必要考虑这个问题了,因为chrome浏览器兼容ES6语法还是很不错的,或者safari浏览器也一样。
  如果对你有帮助,别吝啬一个赞,Thanks

说明

原创作品,禁止转载和伪原创,违者必究!

上一篇下一篇

猜你喜欢

热点阅读