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 代码集(学习js的朋友可以看下)
Jul 22 Javascript
jquery ready函数源代码研究
Dec 06 Javascript
EASYUI TREEGRID异步加载数据实现方法
Aug 22 Javascript
js禁止页面刷新禁止用F5键刷新禁止右键的示例代码
Sep 23 Javascript
javascript 拷贝节点cloneNode()使用介绍
Apr 03 Javascript
自己使用js/jquery写的一个定制对话框控件
May 02 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
Jun 05 Javascript
JS变量及其作用域
Mar 29 Javascript
Vue keep-alive实践总结(推荐)
Aug 31 Javascript
JS库之wow.js使用方法
Sep 14 Javascript
Vue双向绑定实现原理与方法详解
May 07 Javascript
vue实践---根据不同环境,自动转换请求的url地址操作
Sep 21 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面向对象编程快速入门
2006/10/09 PHP
解决php的“It is not safe to rely on the system’s timezone settings”问题
2015/10/08 PHP
jquery的index方法实现tab效果
2011/02/16 Javascript
js replace正则表达式应用案例讲解
2013/01/17 Javascript
JS远程获取网页源代码实例
2013/09/05 Javascript
jQuery之过滤元素操作小结
2013/11/30 Javascript
javascript遇到html5的一些表单属性
2015/07/05 Javascript
深入浅析JavaScript的API设计原则
2016/06/14 Javascript
js实现音频控制进度条功能
2017/04/01 Javascript
基于hover的用法实例(推荐)
2017/07/04 Javascript
详细AngularJs4的图片剪裁组件的实例
2017/07/12 Javascript
JScript实现表格的简单操作
2017/08/15 Javascript
原生JS实现的简单轮播图功能【适合新手】
2018/08/17 Javascript
ES6 更易于继承的类语法的使用
2019/02/11 Javascript
VUE 直接通过JS 修改html对象的值导致没有更新到数据中解决方法分析
2019/12/02 Javascript
JS document form表单元素操作完整示例
2020/01/13 Javascript
Sublime Text3 配置 NodeJs 环境的方法
2020/05/20 NodeJs
JavaScript枚举选择jquery插件代码实例
2020/11/17 jQuery
[01:02:48]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 LGD vs OG
2018/04/02 DOTA
[03:11]TI9战队档案 - Alliance
2019/08/20 DOTA
初步介绍Python中的pydoc模块和distutils模块
2015/04/13 Python
在Django中同时使用多个配置文件的方法
2015/07/22 Python
Python3批量生成带logo的二维码方法
2019/06/24 Python
在 Python 中使用 7zip 备份文件的操作
2020/12/11 Python
在IE6系列等老式浏览器中使用HTML5的新标签实现方案
2012/12/25 HTML / CSS
HTML5新标签兼容——&gt; 的两种方法
2018/09/12 HTML / CSS
优秀教师获奖感言
2014/01/31 职场文书
最新结婚典礼主持词
2014/03/14 职场文书
员工考核评语大全
2014/04/26 职场文书
干部考核评语
2014/04/29 职场文书
中国梦主题教育活动总结
2014/05/05 职场文书
婚礼秀策划方案
2014/05/19 职场文书
转让协议书
2015/01/27 职场文书
横空出世观后感
2015/06/09 职场文书
用python开发一款操作MySQL的小工具
2021/05/12 Python
微信小程序中wxs文件的一些妙用分享
2022/02/18 Javascript