vue框架開發(fā)出現(xiàn)頁(yè)面空白、白屏的解決方法總匯

1.npm run build打包頁(yè)面空白

我們會(huì)發(fā)現(xiàn)頁(yè)面head中引用的js和css文件是出現(xiàn)了路徑錯(cuò)誤,這里修改如下:
解決位置:config/index.js文件:把a(bǔ)ssetsPublicPath: '/'改為assetsPublicPath: './'

build: {
    assetsPublicPath: './',
}

2. iOS的Safari下無(wú)法打開網(wǎng)頁(yè)

webpack-dev-server >= 2.8.0 的版本在 iOS Safari 下無(wú)法打開網(wǎng)頁(yè),效果為白屏。
控制臺(tái)報(bào)錯(cuò):Can't find variable: SockJS 應(yīng)該是 Safari 的 BUG,比如下面的代碼就會(huì)拋出

Error eval("const a = function () {}; function b() { a(); }; b();")

解決方法

  • 1.使用老版本
    yarn add webpack-dev-server@~2.7.0 -D
  • 2.其它方法
    yarn add babel-plugin-transform-es2015-block-scoping -D
    修改 webpack 相關(guān)配置
{
  test: /\.js$/,
  loader: 'babel-loader',
  include: [
    ...,
    /node_modules\/webpack-dev-server/
  ]
}

3.升級(jí)vue2+部分手機(jī)訪問(wèn)出現(xiàn)頁(yè)面空白

npm run dev后可能出現(xiàn)無(wú)法加載到路由模板的信息。
解決位置:config/index.js文件:把 devtool: '#eval-source-map' 改為devtool:'inline-source-map'

dev: {
   devtool:'inline-source-map',
}

4.升級(jí)vue2+IP訪問(wèn)頁(yè)面空白

默認(rèn)只能通過(guò)localhost或者127.0.0.1才能訪問(wèn),如果使用本機(jī)的Ip地址會(huì)出現(xiàn)無(wú)法訪問(wèn)到的情況。
解決位置:config/index.js文件:把config/index.js中“host” 配置為“0.0.0.0”就可以解決,或者設(shè)置為你電腦的IP地址也行:

dev: {
   host: '192.168.10.122', 
}

5.Vue在IE、低版本Android顯示空白問(wèn)題

這是由于IE對(duì)promise的支持不好,我們需要安裝:babel-polyfill和es6-promise:
npm install babel-polyfill
npm install es6-promise
然后在main.js文件中引用:

import 'babel-polyfill'
import Vue from 'vue'
import Es6Promise from 'es6-promise'
Es6Promise.polyfill()

最后 build/webpack.base.conf.js 文件中配置如下:

module.exports = {
     entry: {
     app: ["babel-polyfill", "./src/main.js"]
     }
};

6.Vue只在iOS 10出現(xiàn)白屏問(wèn)題

a:出現(xiàn)變量定義兩次的錯(cuò)誤描述,如下:
SyntaxError: Cannot declare a let variable twice
原因是由于ios 10中Safari中錯(cuò)誤描述如下:當(dāng)你定義一個(gè)與參數(shù)同名的for循環(huán)迭代變量時(shí),我們錯(cuò)誤地認(rèn)為這是一個(gè)語(yǔ)法錯(cuò)誤。解決方法如下:
找到webpack.prod.conf.js文件,在UglifyPlugin的定義里添加關(guān)于mangle的選項(xiàng)

new UglifyJsPlugin({
      uglifyOptions: {
        compress: {
          warnings: false
        },
        mangle: {
          safari10: true
        }
      },
      sourceMap: config.build.productionSourceMap,
      parallel: true
}),

b:使用Swiper插件:這是由于Swiper插件中用到了ES6的語(yǔ)法a = b ** c,a是b的c次方,而iOS 10的Safari里不認(rèn)識(shí)這樣的語(yǔ)法,認(rèn)為這是一個(gè)錯(cuò)誤,所以你需要讓Swiper經(jīng)過(guò)babel的包裝,而缺省狀態(tài)下babel是不對(duì)node_modules里的模塊進(jìn)行編譯的。解決方法是在項(xiàng)目根目錄下新建一個(gè)文件vue.config.js,在里面添加如下語(yǔ)句:

module.exports = {
  chainWebpack: config => {
    config.rule('js').include.add(/node_modules\/(dom7|swiper)\/.*/)
  }
}

轉(zhuǎn)自http://www.fly63.com/article/detial/287

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容