vue 白屏问题汇总(经过广泛用户反馈最终章)

项目中偶尔会遇到vue 第一次打开白屏现象,针对这个问题,找了不同环境下的处理方法,留个纪念

1,ios10 出现白屏

原因是由于ios 10中Safari中错误描述如下:当你定义一个与参数同名的for循环迭代变量时,我们错误地认为这是一个语法错误。解决方法如下:

  • 进入build文件夹;
  • 找到webpack.prod.conf.js文件;
  • UglifyPlugin的定义里添加关于mangle的选项,使它变成下面这个样子
 new UglifyJsPlugin({
      uglifyOptions: {
        compress: {
          warnings: false
        },
        mangle: {
          safari10: true
        }
      },
      sourceMap: config.build.productionSourceMap,
      parallel: true
    }),

2,Swiper插件导致白屏

解决方法是在项目根目录下新建一个文件vue.config.js,在里面添加如下语句:

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

3,npm run build打包页面空白

我们会发现页面head中引用的js和css文件是出现了路径错误,这里修改如下:

解决位置:config/index.js文件:把assetsPublicPath: '/'改为assetsPublicPath: './'

build: {
    assetsPublicPath: './',
}

4,升级vue2+部分手机访问出现页面空白

npm run dev后可能出现无法加载到路由模板的信息。

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

扫描二维码关注公众号,回复: 5271137 查看本文章

5,升级vue2+IP访问页面空白

默认只能通过localhost或者127.0.0.1才能访问,如果使用本机的Ip地址会出现无法访问到的情况。

解决位置:config/index.js文件:把config/index.js中“host” 配置为“0.0.0.0”就可以解决,或者设置为你电脑的IP地址也行:

6,Vue在IE、低版本Android显示空白问题

这是由于IE对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"]
     }
};

博主以上方法均试过,但依旧有小部分机型手机打开为白屏(根据市场用户使用情况,遇到的白屏均为小部分iphone,真叫人脑壳疼),

1)于是开始理性的分析,首先白屏的原因与静态资源没加载相关,所以优先排查打包后的index.html文件,发现文件里面引用资源的路径为

<script type=text/javascript src=./static/js/js/app.js></script>

会不会是 打包后没带引号引起的?

需要在webpack.prod.conf.js 找到minify参数

讲 removeAttributeQuotes: true 改为  removeAttributeQuotes: false 打包后,已经自动添加了引号

2)通过日志监控发现,部分用户请求了 www.**.com/#/static/js/app.js 路径,静态资源路径异常,

需要在config ->index.js文件里 build 里面 assetsPublicPath 参数 ,路径改为 域名+'/'

assetsPublicPath: 域名+'/'  再次打包部署,等待用户反馈

终于,功夫不负有心人,剩余的小部分白屏用户,也可以正常访问了。开心的不得了~

猜你喜欢

转载自blog.csdn.net/superKM/article/details/83721633