vue-cli H5 在app(ios9/android4) 不兼容白屏,頁面空白

ios9/android4 不支持es6寫法,包括一些低版本安卓機,超級坑!!!

最先是要配babel-polyfill

import babel-polyfill
// 在module.exports裏
entry: {
  // app: './src/main.js'
  app: ["babel-polyfill", "./src/main.js"]
}

單獨配裏這裏是不好用的,需要在module.exports裏module里加上這段

{
  test: /\.js$/,
  exclude: /node_modules/,
  loader: "babel-loader"
}

仍然不好使的,需要給某些目錄加編譯,如下include,看resolve在那個目錄下,有的需要path.

{
  test: /\.js$/,
  exclude: /node_modules/,
  loader: "babel-loader”,
  include: [
    path.resolve('src'),
    path.resolve('test'),
    path.resolve('node_modules/webpack-dev-server/client')
  ]
}
仍然不好使的,那就是因爲web-view問題,會導致加載H5需要適配ie
const Home = () => import("../views/Home");

原因是在加載路由時的寫法用尖頭函數(如上),會走到Promise.all(),但在ie瀏覽器上會報錯Promise 未定義
所以需要在最開始加載路由前面定義Promise,在main.js裏第一句話加載Promise,兩種中寫一個便可

import Promise from 'es6-promise';
window.Promise=Promise;

2020.3.26
之後還發現了一種問題是關於swiper的白頁,同樣還是在app裏

import Swiper from "swiper";

這樣引入是有問題的因爲webpack打包會連着這樣引入的包在打一遍,導致打包錯誤,顯示白頁
所以可以修改webpack打包配置,過濾掉/node-module/
也可以想官網上引入cdn
但是對於像vue/react這種單頁面入口建議還是修改webpack配置吧,怎麼說其他頁面也有可能需要引其他包,說不準就是那個打包就出問題了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章