1.npm run build打包頁面空白
我們會(huì)發(fā)現(xiàn)頁面head中引用的js和css文件是出現(xiàn)了路徑錯(cuò)誤宋欺,這里修改如下:
解決位置:config/index.js文件:把a(bǔ)ssetsPublicPath: '/'改為assetsPublicPath: './'
build: {
assetsPublicPath: './',
}
2. iOS的Safari下無法打開網(wǎng)頁
webpack-dev-server >= 2.8.0 的版本在 iOS Safari 下無法打開網(wǎng)頁缚甩,效果為白屏涯保。
控制臺(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ī)訪問出現(xiàn)頁面空白
npm run dev后可能出現(xiàn)無法加載到路由模板的信息。
解決位置:config/index.js文件:把 devtool: '#eval-source-map' 改為devtool:'inline-source-map'
dev: {
devtool:'inline-source-map',
}
4.升級(jí)vue2+IP訪問頁面空白
默認(rèn)只能通過localhost或者127.0.0.1才能訪問兼贡,如果使用本機(jī)的Ip地址會(huì)出現(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對(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)白屏問題
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è)語法錯(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的語法a = b ** c废封,a是b的c次方,而iOS 10的Safari里不認(rèn)識(shí)這樣的語法丧蘸,認(rèn)為這是一個(gè)錯(cuò)誤漂洋,所以你需要讓Swiper經(jīng)過babel的包裝,而缺省狀態(tài)下babel是不對(duì)node_modules里的模塊進(jìn)行編譯的。解決方法是在項(xiàng)目根目錄下新建一個(gè)文件vue.config.js氮发,在里面添加如下語句:
module.exports = {
chainWebpack: config => {
config.rule('js').include.add(/node_modules\/(dom7|swiper)\/.*/)
}
}