vue-cli 打包后提交到线上出现 "Uncaught SyntaxError:Unexpected token" 报错
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了vue-cli 打包后提交到线上出现 "Uncaught SyntaxError:Unexpected token" 报错,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1672字,纯文字阅读大概需要3分钟。
内容图文
![vue-cli 打包后提交到线上出现 "Uncaught SyntaxError:Unexpected token" 报错](/upload/InfoBanner/zyjiaocheng/335/92a646a48d484a14b3f752d26f5d5d3a.jpg)
前言: 项目使用vue-cli版本2.9.3 ,vue-router使用webpackChunkName
实现按需加载.
BUG描述:该报错在项目上线一段时间后,有用户反映页面无法正常游览 (后面以问题1/问题2区分)
问题1.导航点击无法正常跳转,console打印:Error:Loading chunk {n} failed.
报错截图
问题2.页面全白,console打印:Uncaught SyntaxError:Unexpected token <
报错截图:
经过一番折腾,初步定位问题1在经过build/webpack.prod.conf.js
的chunkhash
打包后的JS文件hash值会有变更,因为每次更新代码到线上都会删除旧的dist目录,将最新的dist目录copy上传提供后台更新. 在更新代码的这个过程用户停留在页面上,当用户在更新完后重新操作就会导致报错
问题1解决方法:捕获路由报错. (思路来源:https://www.gxlcms.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 Header
content-type异常,正常情况返回content-type: application/javascript
. 但是有一个js响应的内容为HTML, js无法识别<符号导致抛出报错
问题2目前还在与后台商量如何解决,解决后会更新解决方法分享.有同学遇到同样的问题可以一起讨论或提出更好的解决方案参考学习.★★★
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
内容总结
以上是互联网集市为您收集整理的vue-cli 打包后提交到线上出现 "Uncaught SyntaxError:Unexpected token" 报错全部内容,希望文章能够帮你解决vue-cli 打包后提交到线上出现 "Uncaught SyntaxError:Unexpected token" 报错所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。