原文链接:https://dsx2016.com/?p=987
微信公众号:大师兄2016
每次只要一发版,无论是测试环境还是线上环境,就会有点击卡死问题.
测试环境排查的错误信息为loading chunk XX failed
表现形式为,发版前用户在浏览对应网页,长时间停留在页面或者正在交互,发版后点击就报错并卡死.
由于缓存所产生的问题.
webpack
每次打包的js
文件名称和hash值不一样,当发版后当前html
依赖新的js
文件后不匹配,没有完全拉取网页文件,造成报错.
具体的还可以理解为vue
路由的懒加载,点击时才获取依赖文件,但发版之后依赖文件有了变化和冲突,造成vue router
出错
使用vue router
提供的错误监听,在出现loading chunk XX failed
时,强制刷新当前网页即可.
经测试,有效.
具体代码如下
router.onError((error) => {
const pattern = /Loading chunk (\d)+ failed/g;
const isChunkLoadFailed = error.message.match(pattern);
if (isChunkLoadFailed) {
// 强制刷新当前网页
window.location.reload();
}else{
//其他错误自行处理
console.log(error)
}
});
Categories代码