js报Uncaught SyntaxError: Unexpected token <错误 解决方法

vue项目 报Uncaught SyntaxError: Unexpected token < 错误,一般是本来script src里应该是.js脚本资源,但是服务器却返回了.html 资源,出现这种情况很可能是新项目构建完后,用户还是访问老的缓存页面,老的缓存页面里的script src 引用的资源是服务器返回的404 html文件页面或者是被运维设置( try_files $uri $uri/ /index.html;)成跳转首页的html 文件(因为老的缓存页面里的script src 资源在你构建后 是会被删除的);如下图 就是这样的情况:

js报Uncaught SyntaxError: Unexpected token <错误 解决方法_第1张图片
QQ图片20191220114943.png

这里说是当js引用的文件是项目路径下的文件夹时,会报这个错误。当时出现这个问题 是因为求助我的人他用了CDN 导致 (缓存) 访问了不存在的js,然后这个404错误又重新指向了一个提示的自定义页面,由于脚本里面不允许出现标签因为标签带了<>符号,所以,就会抛出这个异常 从而报错。

image.png

js报Uncaught SyntaxError: Unexpected token <错误 解决方法_第2张图片
image.png

今天 发现一篇文章---Nginx解决VUE的history模式下刷新404报错介绍 说nginx配置与代码静态资源打包方式不匹配 也会导致这样的错误

js报Uncaught SyntaxError: Unexpected token <错误 解决方法_第3张图片
image.png

另外提供下 打开浏览器 再部署后(没有刷新浏览器),点击路由 报错的信息


js报Uncaught SyntaxError: Unexpected token <错误 解决方法_第4张图片
image.png

其实就是报404 资源找不到,这个我采用监听错误的方式(针对404),提示用户是否刷新浏览器

//放在 头部
function getSrcOrHref(msg) {
     if (msg.target){
      var res=msg.target.src ||  msg.target.href || msg.srcElement.href || msg.srcElement.src;
     if (res){
       return  res
     }else {
       return '未知地址'
     }

     }else {
       return '无法找到目标'
     }
    }


    function getHost(url) {
      var getHostReg=/[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?/;
       return  getHostReg.exec(url)[0];

    }

    window.addEventListener('error', (msg, url, row, col, error) => {
      // alert('监测到错误'+msg)
      var targetSrc = getSrcOrHref(msg);
      if (msg.target && (msg.target.nodeName !=='IMG')  && !msg.message && getHost(targetSrc)===window.location.host) {
        if (confirm('检测到平台程序有更新,是否需要刷新浏览器?')) {
         console.error( '可能您的浏览器还在使用过期的缓存文件,是否需要帮您自动刷新浏览器?'+'原因为找不到'+targetSrc);
          window.location.reload()
        }
      }
http://www.jianshu.com/u/e0c3321672f5
      console.warn(msg.target ? (msg.target.outerHTML || msg.srcElement.outerHTML):'无法找到目标地址');
      console.warn(
        msg, url, row, col, error
      );
      return true;
    }, true);
    // 必须捕获阶段执行
    // window.onerror=function (msg, url, row, col, error) {
    //   alert('在冒泡阶段监测到错误'+msg)
    // }

20190517更新
检索资料无意发现
这种在script中src引入html文件也会这样报错。 Uncaught SyntaxError: Unexpected token <反思

扩展资料:
Uncaught SyntaxError: Unexpected token <

你可能感兴趣的:(js报Uncaught SyntaxError: Unexpected token <错误 解决方法)