vue页面渲染异常(白屏或数据不显示)

这两天遇到巨坑的BUG,不过总算找到问题所在。特此记录,以免再坑。

遇到的问题

较大概率(50%)出现渲染异常
正常渲染
异常渲染

调试过程

  1. edura.js完全不加载,按钮也不显示

  2. onerror监听不到任何错误

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    /**
    * @param {String} message 错误信息
    * @param {String} source 出错文件
    * @param {Number} lineno 行号
    * @param {Number} colno 列号
    * @param {Object} error Error对象(对象)
    */

    window.onerror = function(message, source, lineno, colno, error) {
    try {
    console.log('捕获到异常:',{message, source, lineno, colno, error});
    var params = {
    message: message || '',
    source: source || '',
    lineno: lineno || '',
    colno: colno || '',
    error: error || ''
    }
    var str = JSON.stringify(params)
    var xhr = new XMLHttpRequest();
    var url = '//***/logstores/web-error/track_ua.gif?APIVersion=0.6.0&' + str
    xhr.open('GET', url, false);
    xhr.setRequestHeader('Content-Type', 'application/json;charset=utf-8')
    xhr.send(null);
    } catch(err) {
    console.log(err)
    }
    }
  3. 强制更新视图无效

    Vue.$set(this, model, ‘’);
    this.$nextTick();
    this.$forceUpdate();

  4. 不监听错误直接接口上报任意数据,神奇的事情发生了,正常渲染

    1
    2
    3
    4
    var str = JSON.stringify({t: +new Date()})
    var xhr = new XMLHttpRequest();
    var url = '//***/logstores/web-error/track_ua.gif?APIVersion=0.6.0&' + str
    xhr.open('GET', url, false);
  5. 使用抓包工具,正常渲染

  6. 和伙伴讨论BUG出现的原因,初步怀疑宽带运营商劫持
    由于我们的页面都是https协议,所以刚开始并未考虑被劫持。
    断开Wifi,打开4G,正常渲染 0 0.。

总结

运营商劫持导致页面渲染异常


vue页面渲染异常(白屏或数据不显示)
http://example.com/20210204-vue页面渲染异常-白屏或数据不显示/
作者
csorz
发布于
2021年2月4日
许可协议