Angular 懒加载模块中的单水疗懒加载路由调用未定义的 webpack 错误

Angular single-spa lazy loaded routes in lazy loaded modules give call of undefined webpack error

我使用 single-spa 和 angular。我有一个 shell 和一个子应用程序,当我的子应用程序有延迟加载模块时,RootModule 加载 SubModule 加载 SuperSubModule。所有这些路由都是惰性加载路由。当我在没有 single-spa 和 single-spa webpack 配置的情况下为我的应用程序提供服务时,这工作正常。但是当我在生产模式和 aot 下构建我的应用程序时,当我导航到 url 时,到 SuperSubModule 的延迟加载路由 SubModule 会出错。错误是:

ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'call' of undefined TypeError: Cannot read property 'call' of undefined at o (bootstrap:63) at ZoneDelegate.invoke (zone.js:396) at Object.onInvoke (main.js:1) at ZoneDelegate.invoke (zone.js:395) at Object.onInvoke (core.js:39699) at ZoneDelegate.invoke (zone.js:395) at Zone.run (zone.js:153) at zone.js:894 at ZoneDelegate.invokeTask (zone.js:431) at Object.onInvokeTask (main.js:1) at resolvePromise (zone.js:836) at resolvePromise (zone.js:795) at zone.js:897 at ZoneDelegate.invokeTask (zone.js:431) at Object.onInvokeTask (main.js:1) at ZoneDelegate.invokeTask (zone.js:430) at Object.onInvokeTask (core.js:39680) at ZoneDelegate.invokeTask (zone.js:430) at Zone.runTask (zone.js:198) at drainMicroTaskQueue (zone.js:611)

当我再次单击该模块的 url 时,错误是: 错误错误:未捕获(承诺):错误:找不到 'undefined'.

的 NgModule 元数据

Error: No NgModule metadata found for 'undefined'. at lg.resolve (compiler.js:20900) at Th.getNgModuleMetadata (compiler.js:20029) at Jg._loadModules (compiler.js:25824) at Jg._compileModuleAndComponents (compiler.js:25807) at Jg.compileModuleAsync (compiler.js:25769) at useClass.compileModuleAsync (platform-browser-dynamic.js:223) at c.project (router.js:6406) at c._tryNext (mergeMap.js:46) at c._next (mergeMap.js:36) at c.next (Subscriber.js:50) at resolvePromise (zone.js:836) at resolvePromise (zone.js:795) at zone.js:897 at ZoneDelegate.invokeTask (zone.js:431) at Object.onInvokeTask (main.js:1) at ZoneDelegate.invokeTask (zone.js:430) at Object.onInvokeTask (core.js:39680) at ZoneDelegate.invokeTask (zone.js:430) at Zone.runTask (zone.js:198) at drainMicroTaskQueue (zone.js:611)

有人知道如何解决这个问题吗?欢迎任何反馈,我已经被困在这个问题上好几天了。 提前致谢! 编辑:这只发生在生产模式和使用 single-spa 时,而不是在生产模式下独立服务时。

答案在 single-spa 的常见问题解答中: https://single-spa.js.org/docs/faq/#code-splits 您必须执行解决方案 1 和 2 才能使其工作,在我们的案例中 2 错过了。