1. 程式人生 > >vue-cli 專案相容ie瀏覽器的方法

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修改

1、找個android真機測試下(機型版本為4.4以上),真機聯調測試(如果不知道怎麼聯調,那麼請看這裡:Android真機 - 聯調chrome除錯)

2、如果報 報錯 vuex requires a Promise polyfill in this browser.那麼,就是相容性不夠好,請看下面的解決方案:

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

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>