路由懒加载and异步组件,生产环境重新部署后,访问不到资源Error: Loading chunk 13 failed.

场景

生产环境重新部署后,如果用户再次点击,组件又做了懒加载处理,会报Error: Loading chunk * failed.的错误

缘由

这种情况是因为 用户浏览过A模块在浏览器缓存了,部署上线后,A模块因为浏览器缓存机制是可以正常访问浏览的,当用户通过A模块去访问异步加载的B组件的时候,由于每次打包的文件hash值不同,在服务器上找不到B模块,所以就会抛出Error: Loading chunk * failed.的错误

解决方法

遇到这种场景,我们可以利用vue路由onError函数来处理,如果报错,我们就重新刷新页面,以达到资源刷新的目的

代码:

/* 路由异常错误处理,尝试解析一个异步组件时发生错误,重新渲染目标页面 */
router.onError((error) => {
    const pattern = /Loading chunk (\d)+ failed/g;
    const isChunkLoadFailed = error.message.match(pattern);
    console.log(isChunkLoadFailed,'/Loading chunk (\d)+ failed/g','路由懒加载找不到对应的moudle')
    if (isChunkLoadFailed) {
        window.location.reload();
    }else{
        console.log(error)
    }
});


你可能感兴趣的:(路由懒加载and异步组件,生产环境重新部署后,访问不到资源Error: Loading chunk 13 failed.)