Vue使用babel-polyfill兼容IE解决白屏及语法报错

解决vue elementUI项目使用webpack打包上线后,服务器环境下IE报语法错误及白屏问题

在最近的项目中,在使用webpack打包后发布,有用户反馈使用IE浏览器访问会白屏,这就不能忍受了,经过排查发现,发生这个错误应该是有文件没有由ES6转ES5语法造成,而IE不兼容该语法
既然问题找到了,那解决起来应该就容易了,然后事实上并没有我想的那么简单,话不多说,直接开始。
首先,通用的方式就是,项目中引入babel-polyfill,安装方法可以自行百度,在这里我直接上命令:

npm i --save babel-polyfill (或者使用如果安装有cnpm就用cnpm)

第一步:引入babel-polyfill

引入babel-polyfill的方式无非有以下几种
1.在main.js的顶部直接使用 import ‘babel-polyfill’
2.在vue.config.js中,直接在chainWebpack内添加以下代码,只需要引入一处即可

chainWebpack: config => {
    config.entry('main').add('babel-polyfill')
    config.entry.app = ['babel-polyfill', './src/main.js']
  }

第二步:在babel.config.js中设置entry

module.exports = {
  presets: [['@vue/app', { 'useBuiltIns': 'entry', polyfills: ['es6.promise', 'es6.symbol'] }]]

第三步:如果除了项目还引入了其他插件而该插件内部也存在ES6写法,则需要将这些插件的ES6转换成ES5,使用transpileDependencies直接将需要转换的插件放入

  transpileDependencies: ['element-ui', 'echarts', 'highcharts', 'highcharts-3d', 'screenfull', 'oidc-client', 'vuex-oidc']

VUE CLI官方文档中对transpileDependencies的解释是,默认情况下 babel-loader 会忽略所有 node_modules 中的文件。如果你想要通过 Babel 显式转译一个依赖,可以在这个选项中列出来,他接受字符串或者正则表达式

https://cli.vuejs.org/zh/config/#transpiledependencies
在这里插入图片描述
如果引入的包比较多,可以根据package.json中引入包慢慢调试,直到将所有存在ES6语法的插件全部换成ES5

在开发的过程中遇到过一个问题,就是,如果使用cnpm安装依赖,有可能会导致transpiledependencies无效,具体原因还没有去深究,不过我的做法是,直接将node_modules全部删掉后,重新使用npm i安装所有依赖后,再次重新打包,目前问题已解决

仅供参考,有问题欢迎指出

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值