最近在写个vue
的demo
,调试过程中出现个问题,vconsole中提示
[vue-router] Failed to resolve async component default:
Error:Loading chunk 10 failed.
大致意思就是路由异步加载组件的时候报错了
报错来自于webpack
进行code spilt
之后某些bundle
文件lazy loading
失败。但是这个问题的根本原因没有被找到,因为这个问题出现的偶然性太高了,而且有的手机上会出现,有的不会,用模拟器不会出现
实在找不到原因,又因为是偶发性的所以还是做容错处理解决该问题
router.onError
具体API地址router.onError
router.onError(callback)
注册一个回调,该回调会在路由导航过程中出错时被调用。注意被调用的错误必须是下列情形中的一种:
具体解决代码:
router.onError((error) => {
const pattern = /Loading chunk (\d)+ failed/g;
const isChunkLoadFailed = error.message.match(pattern);
const targetPath = router.history.pending.fullPath;
if (isChunkLoadFailed) {
router.replace(targetPath);
}
});
该方法属于损失性能从源头上解决问题,但是不太可取