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 相关文章推荐
JS学习之一个简易的日历控件
Mar 24 Javascript
Javascript string 扩展库代码
Apr 09 Javascript
JS date对象的减法处理实现代码
Dec 28 Javascript
JQuery扩展插件Validate 1 基本使用方法并打包下载
Sep 05 Javascript
Javascript控制页面链接在新窗口打开具体方法
Aug 16 Javascript
javascript中this的四种用法
May 11 Javascript
Jquery效果大全之制作电脑健康体检得分特效附源码下载
Nov 02 Javascript
Javascript中常用的检测方法小结
Oct 08 Javascript
javascript中json基础知识详解
Jan 19 Javascript
基于node.js制作简单爬虫教程
Jun 29 Javascript
JavaScript数组的5种迭代方法
Sep 29 Javascript
vue+elementUI实现简单日历功能
Sep 24 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
来自phpguru得Php Cache类源码
2010/04/15 PHP
PHP转盘抽奖接口实例
2015/02/09 PHP
php去除头尾空格的2种方法
2015/03/16 PHP
mac下多个php版本快速切换的方法
2016/10/09 PHP
PHP实现重载的常用方法实例详解
2017/10/18 PHP
PHP+Ajax简单get验证操作示例
2019/03/02 PHP
jQuery 隔行换色 支持键盘上下键,按Enter选定值
2009/08/02 Javascript
用js设置下拉框为只读的小技巧
2014/04/10 Javascript
javascript实现iframe框架延时加载的方法
2014/10/30 Javascript
了不起的node.js读书笔记之例程分析
2014/12/22 Javascript
jQuery基于ajax实现星星评论代码
2015/08/07 Javascript
JavaScript自动点击链接 防止绕过浏览器访问的方法
2017/01/19 Javascript
JavaScript实现开关等效果
2017/09/08 Javascript
Vue封装Swiper实现图片轮播效果
2018/02/06 Javascript
VUE 实现复制内容到剪贴板的两种方法
2019/04/24 Javascript
vue2.0基于vue-cli+element-ui制作树形treeTable
2019/04/30 Javascript
python实现绘制树枝简单示例
2014/07/24 Python
深入理解python中的浅拷贝和深拷贝
2016/05/30 Python
Python实现SMTP发送邮件详细教程
2021/03/02 Python
pytorch cnn 识别手写的字实现自建图片数据
2018/05/20 Python
python3实现点餐系统
2019/01/24 Python
Python实现字符型图片验证码识别完整过程详解
2019/05/10 Python
python matplotlib 画dataframe的时间序列图实例
2019/11/20 Python
Python的形参和实参使用方式
2019/12/24 Python
Python时间差中seconds和total_seconds的区别详解
2019/12/26 Python
关于tf.nn.dynamic_rnn返回值详解
2020/01/20 Python
Lookfantastic香港官网:英国知名美妆购物网站
2018/06/19 全球购物
国际政治个人自荐信范文
2013/11/26 职场文书
成语的广告词
2014/03/19 职场文书
副科级后备干部考察材料
2014/05/15 职场文书
文明礼仪标语
2014/06/13 职场文书
计算机实训报告范文
2014/11/05 职场文书
2015年党员公开承诺书范文
2015/01/22 职场文书
因个人原因离职的辞职信范文
2015/05/12 职场文书
丧事酒宴答谢词
2015/09/30 职场文书
Python一些基本的图像操作和处理总结
2021/06/23 Python