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 sortable的拖动方法示例详解
Jan 16 Javascript
不想让浏览器运行javascript脚本的方法
Nov 20 Javascript
使用postMesssage()实现iframe跨域页面间的信息传递
Mar 29 Javascript
浅谈javascript中的加减时间
Jul 12 Javascript
利用AngularJs实现京东首页轮播图效果
Sep 08 Javascript
Js apply方法详解
Feb 16 Javascript
jQuery操作css样式
May 15 jQuery
利用jquery如何从json中读取数据追加到html中
Dec 01 jQuery
代码实例ajax实现点击加载更多数据图片
Oct 12 Javascript
如何在node环境实现“get数据解析”代码实例
Jul 03 Javascript
Javascript中Math.max和Math.max.apply的区别和用法详解
Aug 24 Javascript
vue-cli 关闭热更新操作
Sep 18 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/09/04 PHP
php使用异或实现的加密解密实例
2013/09/04 PHP
php计算多个集合的笛卡尔积实例详解
2017/02/16 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
用于table内容排序
2006/07/21 Javascript
setInterval 和 setTimeout会产生内存溢出
2008/02/15 Javascript
Extjs学习笔记之五 一个小细节renderTo和applyTo的区别
2010/01/07 Javascript
js 巧妙去除数组中的重复项
2010/01/25 Javascript
跟着Jquery API学Jquery之一 选择器
2010/04/07 Javascript
使用js在页面中绘制表格核心代码
2013/09/16 Javascript
js完美的div拖拽实例代码
2014/01/22 Javascript
jQuery分组选择器用法实例
2014/12/23 Javascript
Javascript实现快速排序(Quicksort)的算法详解
2015/09/06 Javascript
JS+CSS实现鼠标滑过时动态翻滚的导航条效果
2015/09/24 Javascript
javascript实现九宫格相加数值相等
2020/05/28 Javascript
jquery实现一个简单的表单验证实例
2016/03/30 Javascript
PassWord输入框代码分享
2016/06/07 Javascript
BootStrap中
2016/12/10 Javascript
JS实现动态修改table及合并单元格的方法示例
2017/02/20 Javascript
JavaScript装饰器函数(Decorator)实例详解
2017/03/30 Javascript
vue中的inject学习教程
2019/04/24 Javascript
JavaScript遍历数组和对象的元素简单操作示例
2019/07/09 Javascript
vue-iview动态新增和删除的方法
2020/06/17 Javascript
[03:22]DAC最前线(第二期)—DOTA2亚洲邀请赛主赛场周边及线路探访
2015/01/24 DOTA
Windows下用py2exe将Python程序打包成exe程序的教程
2015/04/08 Python
Python使用MyQR制作专属动态彩色二维码功能
2019/06/04 Python
Django单元测试工具test client使用详解
2019/08/02 Python
Allsole美国/加拿大:英国一家专门出售品牌鞋子的网站
2018/10/21 全球购物
Elemental Herbology官网:英国美容品牌
2019/04/27 全球购物
大学生大二自我鉴定
2013/10/28 职场文书
《鞋匠的儿子》教学反思
2014/03/02 职场文书
房屋鉴定委托书范本
2014/09/23 职场文书
停车位租赁协议书
2014/09/24 职场文书
导游词之西江千户苗寨
2019/12/24 职场文书
如何获取numpy array前N个最大值
2021/05/14 Python
Pillow图像处理库安装及使用
2022/04/12 Python