最近修改項目的兼容性,項目測試ie11兼容性時發現axios會提示promise未定義,在chrome下完全沒毛病,怎么去到ie11就報promise未定義了呢?
翻了一輪axios的文檔終于發現問題原因。
在ie11下直接使用axios會報Promise未定義,這是因為axios本質上是封裝了ES6語法的promise,而promise在IE上并不兼容。
這時只需要引入babel-pollfile就行了。babel-Polyfill相當于一個ES6的兼容墊片, 它會仿效一個完整的ES2015+環境,從而讓某些瀏覽器也能讀懂。
npm install --save babel-polyfill
然后在main.js的頂部引入import "babel-polyfill";?最好給它最優先加載。
隨后在build目錄下webpack.config.js(如果你是vue-cli項目的話那就是build目錄下webpack.base.conf.js)設置app載入babel-polyfill。
module.exports = {
????entry: {
????????????app: ["babel-polyfill",'./src/main.js']
????}
}?
添加完之后,刷新一下瀏覽器,promise未定義就消失啦!
babel-polyfill官網https://babeljs.io/docs/en/babel-polyfill/