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实现的激活输入框后隐藏初始内容
Jun 29 Javascript
来自国外的页面JavaScript文件优化
Dec 08 Javascript
js获取控件位置以及不同浏览器中的差别介绍
Aug 08 Javascript
JQuery中使用Ajax赋值给全局变量失败异常的解决方法
Aug 18 Javascript
chrome浏览器当表单自动填充时如何去除浏览器自动添加的默认样式
Oct 09 Javascript
js实现商城星星评分的效果
Dec 29 Javascript
js实现select选择框效果及美化
Aug 19 Javascript
BootStrap 下拉菜单点击之后不会出现下拉菜单(下拉菜单不弹出)的解决方案
Dec 14 Javascript
JavaScript实现连连看连线算法
Jan 05 Javascript
JavaScript面向对象核心知识与概念归纳整理
May 09 Javascript
Vue中用JSON实现刷新界面不影响倒计时
Oct 26 Javascript
vue实现锚点定位功能
Jun 29 Vue.js
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 购物车的例子
2009/05/04 PHP
ThinkPHP 模板引擎使用详解
2017/05/07 PHP
php ajax数据传输和响应方法
2018/08/21 PHP
如何优雅的使用 laravel 的 validator验证方法
2018/11/11 PHP
前台js改变Session的值(用ajax实现)
2012/12/28 Javascript
js 单击式的下拉菜单效果实例
2013/08/13 Javascript
14个有用的Jquery技巧分享
2015/01/08 Javascript
JS中正则表达式只有3种匹配模式(没有单行模式)详解
2016/07/28 Javascript
3分钟了解vue数据劫持的原理实现
2019/05/01 Javascript
ES6 Object属性新的写法实例小结
2019/06/25 Javascript
微信小程序中的列表切换功能实例代码详解
2020/06/09 Javascript
python利用elaphe制作二维条形码实现代码
2012/05/25 Python
Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法
2015/03/05 Python
Python3.x中自定义比较函数
2015/04/24 Python
python在linux系统下获取系统内存使用情况的方法
2015/05/11 Python
Python实现的特征提取操作示例
2018/12/03 Python
python使用matplotlib画柱状图、散点图
2019/03/18 Python
Windows+Anaconda3+PyTorch+PyCharm的安装教程图文详解
2020/04/03 Python
利用jupyter网页版本进行python函数查询方式
2020/04/14 Python
python爬虫实例之获取动漫截图
2020/05/31 Python
纯css3制作网站后台管理面板
2014/12/30 HTML / CSS
瑞士隐形眼镜和护理产品网上商店:Linsenklick
2019/10/21 全球购物
小米乌克兰网上商店:Xiaomi.UA
2019/10/29 全球购物
GOLFINO英国官网:高尔夫服装
2020/04/11 全球购物
如果一个类实现了多个接口但是这些接口有相同的方法名将会怎样
2013/06/16 面试题
关键字throw与throws的用法差异
2016/11/22 面试题
公司成立感言
2014/01/11 职场文书
有创意的广告词
2014/03/18 职场文书
廉洁使者实施方案
2014/03/29 职场文书
《果园机器人》教学反思
2014/04/13 职场文书
学习雷锋倡议书
2014/04/15 职场文书
假面舞会策划方案
2014/05/29 职场文书
2014年学校体育工作总结
2014/12/08 职场文书
2015年度房地产工作总结
2015/04/09 职场文书
《狼牙山五壮士》读后感:宁死不屈,视死如归
2019/08/16 职场文书
高一作文之暖冬
2019/11/09 职场文书