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 相关文章推荐
jquery.blockUI.js上传滚动等待效果实现思路及代码
Mar 18 Javascript
浅谈被jQuery抛弃的函数及替代函数
May 03 Javascript
JavaScript实现跨浏览器的添加及删除事件绑定函数实例
Aug 04 Javascript
Bootstrap每天必学之媒体对象
Nov 30 Javascript
在js代码拼接dom对象到页面上去的模板总结(必看)
Feb 14 Javascript
使用 Vue.js 仿百度搜索框的实例代码
May 09 Javascript
jQuery事件_动力节点Java学院整理
Jul 05 jQuery
使用webpack构建应用的方法步骤
Mar 04 Javascript
js实现图片局部放大效果详解
Mar 18 Javascript
微信小程序完美解决scroll-view高度自适应问题的方法
Aug 08 Javascript
antd table按表格里的日期去排序操作
Nov 17 Javascript
vue如何使用模拟的json数据查看效果
Mar 31 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
很实用的一个完整email发送程序
2006/10/09 PHP
实用函数7
2007/11/08 PHP
IIS php环境配置PHP5 MySQL5 ZendOptimizer phpmyadmin安装与配置
2008/11/18 PHP
php中switch与ifelse的效率区别及适用情况分析
2015/02/12 PHP
Smarty使用自定义资源的方法
2015/08/08 PHP
php短信接口代码
2016/05/13 PHP
File, FileReader 和 Ajax 文件上传实例分析(php)
2011/04/27 Javascript
cookie的复制与使用记住用户名实现代码
2013/11/04 Javascript
nodejs的10个性能优化技巧
2014/07/15 NodeJs
js实现select跳转菜单新窗口效果代码分享(超简单)
2015/08/21 Javascript
JavaScript入门教程之引用类型
2016/05/04 Javascript
从零学习node.js之详解异步控制工具async(八)
2017/02/27 Javascript
使用grunt合并压缩js和css文件的方法
2017/03/02 Javascript
原生js封装自定义滚动条
2017/03/24 Javascript
laydate日历控件使用方法详解
2017/11/20 Javascript
Es6 Generator函数详细解析
2018/02/24 Javascript
详解用场景去理解函数柯里化(入门篇)
2019/04/11 Javascript
JavaScript冒泡算法原理与实现方法深入理解
2020/06/04 Javascript
深入了解Vue.js 混入(mixins)
2020/07/23 Javascript
Python编程使用NLTK进行自然语言处理详解
2017/11/16 Python
PyQt5每天必学之带有标签的复选框
2018/04/19 Python
对Python生成汉字字库文字,以及转换为文字图片的实例详解
2019/01/29 Python
基于python读取.mat文件并取出信息
2019/12/16 Python
tensorflow实现残差网络方式(mnist数据集)
2020/05/26 Python
keras做CNN的训练误差loss的下降操作
2020/06/22 Python
Python中logging日志的四个等级和使用
2020/11/17 Python
Bogner美国官网:滑雪服中的”Dior”
2018/01/30 全球购物
YII2 全局异常处理深入讲解
2021/03/24 PHP
创业融资计划书
2014/04/25 职场文书
中小学生学籍证明
2014/10/25 职场文书
环卫处个人工作总结
2015/03/04 职场文书
2015年世界环境日活动方案
2015/05/05 职场文书
安全教育观后感
2015/06/17 职场文书
2016国庆节67周年红领巾广播稿
2015/12/18 职场文书
Pytorch中TensorBoard及torchsummary的使用详解
2021/05/12 Python
实操Python爬取觅知网素材图片示例
2021/11/27 Python