https://segmentfault.com/a/1190000016919340
**问题1解决方法:捕获路由报错. (思路来源:[https://segmentfault.com/a/11...](https://segmentfault.com/a/1190000016382323))**
~~~
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解决方法: 经过问题排查发现,vue-cli默认build后的文件名格式为`js/[name].[chunkhash].js`,每次`npm run build`后有改动的文件hash值都会改变,上传后Nginx无法找到最新上传的文件,所以返回了默认`index.html`里的内容,我们的文件后缀名是`.js`自然无法识别`<html>`这种标签符号,导致console抛出`Uncaught SyntaxError:Unexpected token <`,我尝试修改`build/webpack.prod.conf.js`output输出文件名格式,目前问题已得到解决**
![](https://box.kancloud.cn/12750a54c3ef77786830ade9aea47928_680x132.png)
- CSS
- 长度单位
- 问题们
- 背景渐变
- 禁止用户选中
- 给富文本重置样式
- 移动端常见小问题
- bfc
- flex
- 父元素没有包裹子元素的margin
- VUE
- 原理
- 生命周期
- vue-router原理
- 动态修改路由参数
- 在新窗口打开页面
- 连跳两个页面
- 跳转页面自动回到顶部
- vue+webpack项目,停留一段时间报错
- vue 路由去掉#
- webpack编译目录设置
- config配置
- HTTP
- HTTP状态码
- HTTP1.0,HTTP1.1,HTTP2.0
- axios和ajax的区别
- 模块化
- git
- 比较
- 查看远程仓库地址
- git flow
- 比较分支的不同并保存压缩文件
- Tag
- 回退
- node版本管理
- npm
- 确定用户是否在当前页面
- 前端下载文件
- 只能在微信中访问
- 下载图片
- webpack修改路径为相对路径
- 打开新页面-被浏览器拦截
- textarea高度随内容变化
- Debian/Ubuntu 安装shadowsock
- 垂直居中
- video
- 去掉ios原始播放大按钮
- 前端直播
- ios系列
- js弹出错误代码
- nginx在MAC上的安装、启动、重启和关闭
- 解析latex格式的数学公式
- Mac 新建unix可执行文件
- 正则-格式化a链接
- 原型
- unicode解析
- vue+webpack打包优化
- 各种JS题
- ES6
- seo
- React
- 兼容性
- canvas
- zsh