【发布时间】:2018-03-06 16:07:11
【问题描述】:
我们正在为路由器模块使用延迟加载。
{
path: 'users',
loadChildren: 'app/users/users.module#UsersModule',
},
但是当我们更新版本我们的应用程序(上传新的捆绑包到服务器)时,它总是被破坏:旧应用程序(该用户已经下载)试图获取旧的块文件,它不在服务器了。
实例:https://alexshakura.github.io/chunk-error/ (我刚刚重命名了块以突出显示错误)
处理此错误的正确方法是什么?
让我描述一下步骤:
- AppVersion1 由用户加载(没有延迟加载的块)
- 我们更新了应用并将捆绑包上传到服务器(所以目前 AppVersion2 是正确的)
- 用户(仍然有 AppVersion1)转到加载惰性模块的路由,BUT 它尝试从 AppVersion1 加载没有已经存在了。
【问题讨论】:
-
什么错误?您没有发布,也不清楚您所说的更新是什么意思。您是说如果您重新编译并上传该块文件丢失了吗?或者清单没有指向最新版本?
-
抱歉不够清楚。尝试获取不再存在的文件(块)的 http 错误(新文件具有新的哈希后缀)。我稍后会用预览更新问题
-
您是否真的验证了该块在服务器上传后?然后您是否验证了您的清单与假定的块匹配?根据您到目前为止所描述的内容,这似乎是一个部署问题。
-
不,客户端过时的应用程序试图通过旧路径加载块
-
是的,自定义错误处理程序可能是答案,我只是想检查一下,也许有更精确的解决方案:预加载策略,拦截器,路由错误