Vue项目兼容IE11

使用的是vue-typescript-admin-template项目(vue-cli3脚手架搭建)进行改造的,但在IE11下面出现各种语法错误,下面将解决方法记录下来,供大家参考。

下面是错误截图:

语法错误:

Promise 错误

polyfill

默认的Vue CLI项目会使用@vue/babel-preset-app,它通过@bable/preset-env和browserslist配置来决定项目需要的polyfill。

默认情况下,它会把useBuiltIns: 'usage' 传递给@bable/preset-env,这样它会根据源代码中出现的语言特性自动检测需要的 polyfill。这确保了最终包里 polyfill 数量的最小化。然而,这也意味着如果其中一个依赖需要特殊的 polyfill,默认情况下 Babel 无法将其检测出来。

直接照Vue CLi浏览器兼容性中上解决方法:

第一步:在babel的相关配置文件(babel.config.js、.babelrc 或package.json 的babel字段任意一个)中, 增加

"useBuiltIns": "entry"

注:babel7版本以后,会有差异 (https://babeljs.io/docs/en/babel-polyfill/)

下面我们配置.babelrc文件:

{
    "presets": [
      [
        "@babel/preset-env",
        {
          "useBuiltIns": "entry"
        }
      ]
    ]
  }

第二步: 安装'@babel/polyfill',并在入口文件main.js中引入

npm install --save @babel/polyfill

引入的话官网推荐使用:

import "core-js/stable";
import "regenerator-runtime/runtime";

最后重新启动项目,应该可以解决IE11问题。

如果还是不行可以在vue.config.js中配置transpileDependencies,默认情况下babel-loader 会忽略所有 node_modules 中的文件。如果你想要通过 Babel 显式转译一个依赖,可以在 transpileDependencies 选项中列出来。

如果项目中使用了CSS var(), IE11是不兼容的,我们可以使用css-vars-ponyfill

npm install --save css-vars-ponyfill

在main.js中引入即可:

import cssVars from 'css-vars-ponyfill'
cssVars({})

 

参考资料:

https://cli.vuejs.org/zh/guide/browser-compatibility.html#usebuiltins-usage

https://zhuanlan.zhihu.com/p/103907934

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值