gpt4 book ai didi

Angular 2 错误 : Loading chunk failed many times

转载 作者:行者123 更新时间:2023-12-03 17:44:49 25 4
gpt4 key购买 nike

我在服务器上部署了 angular 2 应用程序,它工作正常。此外,我正在记录 Angular 应用程序的错误,以便我可以解决它们并使我的应用程序更稳定。

我不断收到 Loading chunk failed 错误。

Error: Uncaught (in promise): Error: Loading chunk 9 failed.
(error: https://prjectcdn/9.d91e531959b3f1aa8ff2.js)
Error: Loading chunk 9 failed.
(error: https://prjectcdn/9.d91e531959b3f1aa8ff2.js)
at HTMLScriptElement.u (https://prjectcdn/runtime.94ca0c35f923f70cf7e7.js:1:1243)
at HTMLScriptElement.P (https://prjectcdn/polyfills.ba52267bd36a0b180ce1.js:1:73488)
at t.invokeTask (https://prjectcdn/polyfills.ba52267bd36a0b180ce1.js:1:64564)
at Object.onInvokeTask (https://prjectcdn/main.86b90fde964f10f1e8a8.js:1:756933)
at t.invokeTask (https://prjectcdn/polyfills.ba52267bd36a0b180ce1.js:1:64485)
at n.runTask (https://prjectcdn/polyfills.ba52267bd36a0b180ce1.js:1:59748)
at n.invokeTask [as invoke] (https://prjectcdn/polyfills.ba52267bd36a0b180ce1.js:1:65654)
at m (https://prjectcdn/polyfills.ba52267bd36a0b180ce1.js:1:76575)
at HTMLScriptElement.b (https://prjectcdn/polyfills.ba52267bd36a0b180ce1.js:1:76805)
at HTMLScriptElement.u (webpack:///webpack/bootstrap:133:0)
at apply (webpack:///C:/GitApps/prodoh/WebApp/angular-app/node_modules/zone.js/dist/zone.js.pre-build-optimizer.js:1188:38)
at apply (webpack:///C:/GitApps/prodoh/WebApp/angular-app/node_modules/zone.js/dist/zone.js.pre-build-optimizer.js:421:30)
at invokeTask (webpack:///C:/GitApps/prodoh/WebApp/angular-app/node_modules/@angular/core/fesm5/core.js.pre-build-optimizer.js:17290:32)
at onInvokeTask (webpack:///C:/GitApps/prodoh/WebApp/angular-app/node_modules/zone.js/dist/zone.js.pre-build-optimizer.js:420:35)
at invokeTask (webpack:///C:/GitApps/prodoh/WebApp/angular-app/node_modules/zone.js/dist/zone.js.pre-build-optimizer.js:188:46)
at runTask (webpack:///C:/GitApps/prodoh/WebApp/angular-app/node_modules/zone.js/dist/zone.js.pre-build-optimizer.js:496:33)
at invoke (webpack:///C:/GitApps/prodoh/WebApp/angular-app/node_modules/zone.js/dist/zone.js.pre-build-optimizer.js:1540:13)
at invokeTask (webpack:///C:/GitApps/prodoh/WebApp/angular-app/node_modules/zone.js/dist/zone.js.pre-build-optimizer.js:1566:16)
at z (webpack:///C:/GitApps/prodoh/WebApp/angular-app/node_modules/zone.js/dist/zone.js.pre-build-optimizer.js:814:30)
at resolvePromise (webpack:///C:/GitApps/prodoh/WebApp/angular-app/node_modules/zone.js/dist/zone.js.pre-build-optimizer.js:771:16)
at webpack:///C:/GitApps/prodoh/WebApp/angular-app/node_modules/zone.js/dist/zone.js.pre-build-optimizer.js:873:16
at apply (webpack:///C:/GitApps/prodoh/WebApp/angular-app/node_modules/zone.js/dist/zone.js.pre-build-optimizer.js:421:30)
at invokeTask (webpack:///C:/GitApps/prodoh/WebApp/angular-app/node_modules/@angular/core/fesm5/core.js.pre-build-optimizer.js:17290:32)
at onInvokeTask (webpack:///C:/GitApps/prodoh/WebApp/angular-app/node_modules/zone.js/dist/zone.js.pre-build-optimizer.js:420:35)
at invokeTask (webpack:///C:/GitApps/prodoh/WebApp/angular-app/node_modules/zone.js/dist/zone.js.pre-build-optimizer.js:188:46)
at runTask (webpack:///C:/GitApps/prodoh/WebApp/angular-app/node_modules/zone.js/dist/zone.js.pre-build-optimizer.js:595:34)
at drainMicroTaskQueue (webpack:///C:/GitApps/prodoh/WebApp/angular-app/node_modules/zone.js/dist/zone.js.pre-build-optimizer.js:500:20)
at invoke (webpack:///C:/GitApps/prodoh/WebApp/angular-app/node_modules/zone.js/dist/zone.js.pre-build-optimizer.js:1540:13)

我总是在 CDN 中保留旧 block ,但仍然经常遇到此错误。这个问题的根本原因应该是什么,我该如何克服这个问题?

我无法重现此错误。

最佳答案

Error: Uncaught (in promise): Error: Loading chunk 9 failed.



正如此 article 中详细描述的那样
  • Angular 延迟加载功能是一种按需加载 NgModules 的设计模式,它将构建文件拆分为许多 block 并按需加载
    加快页面速度。
  • 默认情况下,浏览器在初始加载时缓存 HTML 和 CSS/JS block 以加快速度
    应用程序通过从缓存加载而不是进行网络调用。


  • 期待Loading chunk error的原因
  • 如果您已经在浏览器中打开了应用程序,并且当您尝试导航路由加载 block 失败时进行了新的构建部署,则会出现问题,因为浏览器正在使用已经缓存的 block 而不是新部署的 block 。


  • 解决此问题的解决方法。
  • 硬刷新(control + shift + R)新构建部署加载新 block 后的页面一切正常,我们只需要向用户显示弹出消息并要求他重新加载页面
  • 如果使用 global error handler 出现 block 失败错误,以编程方式强制应用重新加载

  • import { ErrorHandler } from '@angular/core';

    @Injectable()
    export class GlobalErrorHandler implements ErrorHandler {

    handleError(error: any): void {
    const chunkFailedMessage = /Loading chunk [\d]+ failed/;

    if (chunkFailedMessage.test(err.message)) {
    window.location.reload();
    }
    // other stuff for error handling.
    }
    }
  • 在我们的根模块中提供它以更改我们应用程序中的默认行为,因此我们使用自定义的 GlobalErrorHandler 来代替默认的 ErrorHandler 类类(class)。

  • @NgModule({   
    providers: [{provide: ErrorHandler, useClass: GlobalErrorHandler}]
    })

    关于 Angular 2 错误 : Loading chunk failed many times,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57271647/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com