解决偶现问题 Loading chunk ** failed
原因: 路由异步加载组件报错,错误来源 webpack 进行 code spilt 之后某些 bundle 文件 lazy loading 失败
解决方案:
- 错误在一个路由守卫函数中被同步抛出
- 错误在一个路由守卫函数中通过调用 next(err) 的方式异步捕获并处理
- 渲染一个路由的过程中,需要尝试解析一个异步组件时发生错误
- 将异步组件改为同步组件
router.onError(error => {
const pattern = /Loading chunk (\w)+ failed/g
const isError = error.message.match(pattern)
const targetPath = router.history.pending.fullPath
if (isError) {
router.replace(targetPath)
}
})