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

Chason
2021-03-16 / 0 评论 / 0 点赞 / 911 阅读 / 2,292 字
温馨提示:
本文最后更新于 2021-03-17,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

原文链接:https://blog.csdn.net/superkm/article/details/83721633

项目中偶尔会遇到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'

 

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: 域名+'/'  再次打包部署,等待用户反馈

补充:

  1. 如果是测试环境出现这种问题,看一下是否引入了vconsole,虽然vconsole很好用,但是确实也会引发白屏。
  2. 如果使用以上办法还是得不到解决,如果同时又引入了swiper,那么请删除swiper,移动端可以用vant框架写轮播。
0

评论区