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 错过了。
我使用 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 错过了。