VUE 2.0 開發(fā)單頁項(xiàng)目-部分手機(jī)瀏覽器頁面顯示空白解決方案

VUE 2.0 開發(fā)單頁項(xiàng)目-部分手機(jī)瀏覽器頁面顯示空白解決方案

使用vue開發(fā)過一段時間了,采用 Vue-cli腳手架中出現(xiàn)一些頁面空白問題的解決方法總匯

1.npm run build打包頁面空白

我們會發(fā)現(xiàn)頁面head中引用的js和css文件是出現(xiàn)了路徑錯誤,這里修改如下:

解決位置:config/index.js文件:把a(bǔ)ssetsPublicPath: '/'改為assetsPublicPath: './'

build: {assetsPublicPath:'./',}

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

webpack-dev-server >= 2.8.0 的版本在 iOS Safari 下無法打開網(wǎng)頁,效果為白屏。?

控制臺報(bào)錯:Can't find variable: SockJS 應(yīng)該是 Safari 的 BUG,比如下面的代碼就會拋出?

Erroreval("const a = function () {}; function b() { a(); }; b();")

解決方法

1.使用老版本:

yarnaddwebpack-dev-server@~2.7.0-D

2.其它方法

yarnadd babel-plugin-transform-es2015-block-scoping -D

修改 webpack 相關(guān)配置

{test: /\.js$/,? loader:'babel-loader',? include: [? ? ...,? ? /node_modules\/webpack-dev-server/? ]}

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

npm run dev后可能出現(xiàn)無法加載到路由模板的信息。

解決位置:config/index.js文件:把 devtool: '#eval-source-map'? 改為devtool:'inline-source-map'

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

4.升級vue2+IP訪問頁面空白

默認(rèn)只能通過localhost或者127.0.0.1才能訪問,如果使用本機(jī)的Ip地址會出現(xiàn)無法訪問到的情況。

解決位置:config/index.js文件:把config/index.js中“host” 配置為“0.0.0.0”就可以解決,或者設(shè)置為你電腦的IP地址也行:

dev: {host:'192.168.10.122', }

5.Vue在IE、低版本Android顯示空白問題

這是由于IE對promise的支持不好,我們需要安裝:babel-polyfill和es6-promise:

npminstall babel-polyfillnpm install es6-promise

然后在main.js文件中引用:

import'babel-polyfill'importVuefrom'vue'importEs6Promisefrom'es6-promise'Es6Promise.polyfill()

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

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

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

a:出現(xiàn)變量定義兩次的錯誤描述,如下:

SyntaxError: Cannot declare aletvariable twice

原因是由于ios 10中Safari中錯誤描述如下:當(dāng)你定義一個與參數(shù)同名的for循環(huán)迭代變量時,我們錯誤地認(rèn)為這是一個語法錯誤。解決方法如下:

找到webpack.prod.conf.js文件,在UglifyPlugin的定義里添加關(guān)于mangle的選項(xiàng)

newUglifyJsPlugin({? ? ??

????uglifyOptions: {? ? ? ?

?????????compress: {? ? ? ? ?

?????????warnings:false

????????},? ? ? ??

????????mangle: {? ? ? ? ??

????????????safari10:true

? ? ? ? ? }? ? ??

????????},? ? ??

????sourceMap: config.build.productionSourceMap,? ? ??

????parallel:true

}),

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

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

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

相關(guān)閱讀更多精彩內(nèi)容

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