使用带有延迟加载模块的angular2,我可以从服务器接收(例如)401HTTP代码
Bootstrap 0b40费用...:101获取http://localhost:8082/2.chunk.js
Error: Loading chunk 2 failed.
at HTMLScriptElement.onScriptComplete (bootstrap 0b40fee…:91)
at HTMLScriptElement.wrapFn (zone.js:1032)
at ZoneDelegate.invokeTask (zone.js:414)
at Object.onInvokeTask (core.es5.js:4119)
at ZoneDelegate.invokeTask (zone.js:413)
at Zone.runTask (zone.js:181)
at HTMLScriptElement.ZoneTask.invoke (zone.js:476)
如何处理此错误?
9条答案
按热度按时间fv2wmkja1#
有关详细信息,请检查my answer
global error handler
发生区块失败错误,则以编程方式强制应用重新加载。GlobalErrorHandler
类,而不是使用默认ErrorHandler类。jfgube3f2#
我也遇到了同样的问题,所以我进行了调查。我找到了解决方案。当我重新部署到另一台服务器时,块有一个[散列],这种情况发生在我身上。
您可以在如下的catch all中捕获错误:
或直接在导航的链接处
pengsaosao3#
下面是我的解决方案,我将这个服务作为一个单例注入到我的app / core模块中。
它等待来自路由器的NavigationError示例,检查它们是否是X1 M0 N1 X的,然后重定向到用户无论如何都想去的地方。
kyxcudwk4#
当部署新代码时会发生这种情况。保存文件和哈希的
manifest.js
在不刷新的情况下不会更新,当它加载块时,显然使用了manifest.js中的旧哈希。因此,在捕捉错误时,我们可以使用给定的url:-强制重载
nom7f22z5#
任何环境或路由选择相关问题都可能引起与块相关的错误,使得它们难以被揭穿。
在我的例子中,在PWA中移动的数据量太大,Angular 路由器无法处理,它会淹没js块getter的头,从而引发bad_request错误。
我建议你检查一下那些网络调用(像chunks.js的getter),看看头文件中是否有任何不寻常的地方,并在你当前的开发环境中重构粗略的东西,因为这是一个真实的的黑洞,需要你自己调查错误的来源。
希望能有所帮助
slhcrj9b6#
看看渔获物储藏室,我猜服务人员在渔获物储藏室里保存一些东西
mu0hgdu07#
这有助于我了解错误内部的内容
拒绝、承诺、区域、任务
下面是我的解决方案:
to94eoyn8#
在我的例子中,我把我的文件放进了一个S3桶里。我一直收到这个错误,因为它一起调用了错误的文件名,并返回了一个HTML错误响应。
在某个时候,我让IT团队知道发生了什么。他们说,让我们使CloudFront上该高速缓存无效...什么?!耶!让我们这样做...
这个故事的寓意是,如果您一直在Web上搜索此错误的答案,但没有找到任何答案,请与IT团队或任何可能缓存index.html文件的地方进行检查。
ar7v8xwq9#
这可能意味着未处理的异常.你必须到处理错误响应(4xx,5xx状态代码)从服务器在任何方式你想要:在某处显示错误消息,重定向到某个页面,执行任何操作,但不要让它不被处理。
例如: