vue-cli 打包后提交到线上出现 "Uncaught SyntaxError:Unexpected token" 报错


Posted in Javascript onNovember 06, 2018

前言: 项目使用vue-cli版本2.9.3 ,vue-router使用webpackChunkName实现按需加载.

vue-cli 打包后提交到线上出现 "Uncaught SyntaxError:Unexpected token" 报错

BUG描述:该报错在项目上线一段时间后,有用户反映页面无法正常游览 (后面以问题1/问题2区分)

问题1.导航点击无法正常跳转,console打印:Error:Loading chunk {n} failed.

报错截图vue-cli 打包后提交到线上出现 "Uncaught SyntaxError:Unexpected token" 报错

问题2.页面全白,console打印:Uncaught SyntaxError:Unexpected token <

报错截图: vue-cli 打包后提交到线上出现 &quot;Uncaught SyntaxError:Unexpected token&quot; 报错

经过一番折腾,初步定位问题1在经过build/webpack.prod.conf.jschunkhash打包后的JS文件hash值会有变更,因为每次更新代码到线上都会删除旧的dist目录,将最新的dist目录copy上传提供后台更新. 在更新代码的这个过程用户停留在页面上,当用户在更新完后重新操作就会导致报错

vue-cli 打包后提交到线上出现 &quot;Uncaught SyntaxError:Unexpected token&quot; 报错

问题1解决方法:捕获路由报错. (思路来源:https://3water.com/article/147427.htm)

routers.onError((err) => {
 const pattern = /Loading chunk (\d)+ failed/g;
 const isChunkLoadFailed = err.message.match(pattern);
 if (isChunkLoadFailed) {
  let chunkBool = sessionStorage.getItem('chunkError');
  let nowTimes = Date.now();
  if (chunkBool === null || chunkBool && nowTimes - parseInt(chunkBool) > 60000) {//路由跳转报错,href手动跳转
   sessionStorage.setItem('chunkError', 'reload');
   const targetPath = routers.history.pending.fullPath;
   window.location.href = window.location.origin + targetPath;
  }else if(chunkBool === 'reload'){ //手动跳转后依然报错,强制刷新
   sessionStorage.setItem('chunkError', Date.now());
   window.location.reload(true);
  }
 }
})

问题2在Network查看js文件加载的时候发现某个js文件Response Headercontent-type异常,正常情况返回content-type: application/javascript. 但是有一个js响应的内容为HTML, js无法识别<符号导致抛出报错

vue-cli 打包后提交到线上出现 &quot;Uncaught SyntaxError:Unexpected token&quot; 报错

vue-cli 打包后提交到线上出现 &quot;Uncaught SyntaxError:Unexpected token&quot; 报错

问题2目前还在与后台商量如何解决,解决后会更新解决方法分享.有同学遇到同样的问题可以一起讨论或提出更好的解决方案参考学习.★★★

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript利用append添加元素报错的解决方法
Jul 01 Javascript
常用jQuery选择器总结
Jul 11 Javascript
JS在onclientclick里如何控制onclick的执行
May 30 Javascript
Js操作DOM元素及获取浏览器高宽的简单方法
Sep 08 Javascript
纯原生js实现table表格的增删
Jan 05 Javascript
利用Vue v-model实现一个自定义的表单组件
Apr 27 Javascript
Angular 4依赖注入学习教程之组件服务注入(二)
Jun 04 Javascript
vue中简单弹框dialog的实现方法
Feb 26 Javascript
详解JS实现系统登录页的登录和验证
Apr 29 Javascript
微信小程序缓存过期时间的使用详情
May 12 Javascript
express启用https使用小记
May 21 Javascript
详解JS深拷贝与浅拷贝
Aug 04 Javascript
100行代码实现一个vue分页组功能
Nov 06 #Javascript
微信小程序自定义tabBar组件开发详解
Sep 24 #Javascript
Vue递归实现树形菜单方法实例
Nov 06 #Javascript
electron中使用bootstrap的示例代码
Nov 06 #Javascript
vue实现自定义日期组件功能的实例代码
Nov 06 #Javascript
浅谈Vue数据响应思路之数组
Nov 06 #Javascript
Vue项目中最新用到的一些实用小技巧
Nov 06 #Javascript
You might like
php 在文件指定行插入数据的代码
2010/05/08 PHP
检测png图片是否完整的php代码
2010/09/06 PHP
php并发加锁示例
2016/10/17 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
IE6下JS动态设置图片src地址问题
2010/01/08 Javascript
基于jquery的修改当前TAB显示标题的代码
2010/12/11 Javascript
javascript nextSibling 与 getNextElement(node) 使用介绍
2011/10/13 Javascript
jquery中html、val与text三者属性取值的联系与区别介绍
2013/12/29 Javascript
使用javascript控制cookie显示和隐藏背景图
2014/02/12 Javascript
微信小程序 实现tabs选项卡效果实例代码
2016/10/31 Javascript
JS访问DOM节点方法详解
2016/11/29 Javascript
js正则表达式最长匹配(贪婪匹配)和最短匹配(懒惰匹配)用法分析
2016/12/27 Javascript
js replace()去除代码中空格的实例
2017/02/14 Javascript
深入理解javascript的getTime()方法
2017/02/16 Javascript
JS 组件系列之Bootstrap Table 冻结列功能IE浏览器兼容性问题解决方案
2017/06/30 Javascript
详解vue-cli 快速搭建单页应用之遇到的问题及解决办法
2018/03/01 Javascript
Koa 使用小技巧(小结)
2018/10/22 Javascript
vue 表单验证按钮事件交由父组件触发的方法
2018/12/17 Javascript
vue大型项目之分模块运行/打包的实现
2020/09/21 Javascript
python中迭代器(iterator)用法实例分析
2015/04/29 Python
机器学习python实战之决策树
2017/11/01 Python
对python的文件内注释 help注释方法
2018/05/23 Python
Python实现的多进程拷贝文件并显示百分比功能示例
2019/04/09 Python
Django实现微信小程序的登录验证功能并维护登录态
2019/07/04 Python
python 双循环遍历list 变量判断代码
2020/05/04 Python
Tensorflow全局设置可见GPU编号操作
2020/06/30 Python
20行Python代码实现一款永久免费PDF编辑工具的实现
2020/08/27 Python
python合并多个excel文件的示例
2020/09/23 Python
python hmac模块验证客户端的合法性
2020/11/07 Python
美国领先的家居装饰和礼品商店:Kirkland’s
2017/01/30 全球购物
简述进程的启动、终止的方式以及如何进行进程的查看
2014/02/20 面试题
2015年度个人教学工作总结
2015/05/20 职场文书
中秋晚会致辞
2015/07/31 职场文书
孙振耀退休感言
2015/08/01 职场文书
2016年教师党员公开承诺书
2016/03/24 职场文书
python缺失值的解决方法总结
2021/06/09 Python