用vue-cli做的項目,用了promise,結果IE下報promise未定義,甚至在比較老的andriod手機瀏覽器上會顯示空白頁面,解決方案如下:
首先安裝:babel-polyfill
npm install babel-polyfill --save
然后引入:babel-polyfill
在mian.js中直接引入
import 'babel-polyfill'
或者在vue-cli2中,引入如下在build目錄下,webpack.base.conf.js里
entry: {
app: ["babel-polyfill", "./src/main.js"]
},
即可。
【說明】vue-cli項目里默認有babel轉碼器,但是:
Babel 默認只轉換新的 JavaScript 句法(syntax),而不轉換新的 API,比如Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise等全局對象,以及一些定義在全局對象上的方法(比如Object.assign)都不會轉碼。
舉例來說,ES6 在Array對象上新增了Array.from方法。Babel 就不會轉碼這個方法。如果想讓這個方法運行,必須使用babel-polyfill,為當前環境提供一個墊片。