vue-cli 项目兼容ie浏览器的方法

问题描述

ie11打开vue2.0项目空白,控制台报错 
vuex requires a Promise polyfill in this browser;

原因

Babel 默认只转换新的 JavaScript 句法(syntax),而不转换新的 API ,比如 Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise 等全局对象,以及一些定义在全局对象上的方法(比如 Object.assign)都不会转码。为了解决这个问题,我们使用一种叫做 Polyfill(代码填充,也可译作兼容性补丁) 的技术。

简单地说,polyfill即是在当前运行环境中用来复制(意指模拟性的复制,而不是拷贝)尚不存在的原生 api 的代码。

解决办法

首先

安装babel-polyfill 
npm install babel-polyfill --save-dev

入口文件引用

main.js中引用 
import 'babel-polyfill'

vue-cli 配置修改

如果也是用了官方脚手架vue-cli,还需要在webpack.config.js配置文件中做各修改,用 
module.exports = { 
entry: { 
app: ["babel-polyfill", "./src/main.js"] 

};
 
替代 
module.exports = { 
entry: { 
app: './src/main.js' 

}
 
如果有多配置可以在webpack.base.config.js修改

参考文章:https://www.jianshu.com/p/7ba32fb7149e

1、找个android真机测试下(机型版本为4.4以上),真机联调测试(如果不知道怎么联调,那么请看这里:Android真机 - 联调chrome调试)


2、如果报 报错 vuex requires a Promise polyfill in this browser.那么,就是兼容性不够好,请看下面的解决方案:

首先,使用 node 安装 *babel-polyfill 命令*

扫描二维码关注公众号,回复: 4944053 查看本文章
npm install --save-dev -polyfill

解决方案如下:

方案1:在 webpack.config.js 文件中,entry 入口处修改,加入即可

"babel-polyfill":"babel-polyfill",//用来解决的兼容性

例如:

  1. entry: {

  2. "babel-polyfill":"babel-polyfill",//用来解决的兼容性

  3. app: path.resolve(__dirname, config.entry.module + "/app.js"),

  4. vendor: config.entry.vendor

  5. },

方案2:不修改webpack的情况下,在你的主入口文件头部加入,例如:app.js中加入即可

import 'babel-polyfill'

例如:

  1. import 'babel-polyfill'

  2. import Vue from 'vue';

  3. Vue.config.debug = true;


方案3:也就是使用cdn的资源,以js的文件加入到html页面:例如:

<script src="https://cdn.bootcss.com/babel-polyfill/6.23.0/polyfill.min.js"></script>

猜你喜欢

转载自blog.csdn.net/weixin_41014370/article/details/82345885