美文网首页
vue框架开发出现页面空白、白屏的解决方法总汇

vue框架开发出现页面空白、白屏的解决方法总汇

作者: 三天两觉_ | 来源:发表于2019-06-18 11:50 被阅读0次

    1.npm run build打包页面空白

    我们会发现页面head中引用的js和css文件是出现了路径错误,这里修改如下:
    解决位置:config/index.js文件:把assetsPublicPath: '/'改为assetsPublicPath: './'

    build: {
        assetsPublicPath: './',
    }
    

    2. iOS的Safari下无法打开网页

    webpack-dev-server >= 2.8.0 的版本在 iOS Safari 下无法打开网页,效果为白屏。
    控制台报错:Can't find variable: SockJS 应该是 Safari 的 BUG,比如下面的代码就会抛出

    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 相关配置
    {
      test: /\.js$/,
      loader: 'babel-loader',
      include: [
        ...,
        /node_modules\/webpack-dev-server/
      ]
    }
    

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

    npm run dev后可能出现无法加载到路由模板的信息。
    解决位置:config/index.js文件:把 devtool: '#eval-source-map' 改为devtool:'inline-source-map'

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

    4.升级vue2+IP访问页面空白

    默认只能通过localhost或者127.0.0.1才能访问,如果使用本机的Ip地址会出现无法访问到的情况。
    解决位置:config/index.js文件:把config/index.js中“host” 配置为“0.0.0.0”就可以解决,或者设置为你电脑的IP地址也行:

    dev: {
       host: '192.168.10.122', 
    }
    

    5.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"]
         }
    };
    

    6.Vue只在iOS 10出现白屏问题

    a:出现变量定义两次的错误描述,如下:
    SyntaxError: Cannot declare a let variable twice
    原因是由于ios 10中Safari中错误描述如下:当你定义一个与参数同名的for循环迭代变量时,我们错误地认为这是一个语法错误。解决方法如下:
    找到webpack.prod.conf.js文件,在UglifyPlugin的定义里添加关于mangle的选项

    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里不认识这样的语法,认为这是一个错误,所以你需要让Swiper经过babel的包装,而缺省状态下babel是不对node_modules里的模块进行编译的。解决方法是在项目根目录下新建一个文件vue.config.js,在里面添加如下语句:

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

    转自http://www.fly63.com/article/detial/287

    相关文章

      网友评论

          本文标题:vue框架开发出现页面空白、白屏的解决方法总汇

          本文链接:https://www.haomeiwen.com/subject/jsoxqctx.html