延迟加载模块中的 Angular single-spa 延迟加载路由调用未定义的 webpack 错误
Posted
技术标签:
【中文标题】延迟加载模块中的 Angular single-spa 延迟加载路由调用未定义的 webpack 错误【英文标题】:Angular single-spa lazy loaded routes in lazy loaded modules give call of undefined webpack error 【发布时间】:2020-04-05 20:56:33 【问题描述】:我使用带角度的单水疗中心。我有一个外壳和一个子应用程序,当我的子应用程序具有延迟加载的模块时,RootModule 加载了加载 SubModule 的加载 SuperSubModule。所有这些路由都是延迟加载的路由。当我在没有 single-spa 和 single-spa webpack 配置的情况下为我的应用程序提供服务时,这可以正常工作。但是当我在生产模式和 aot 下构建我的应用程序时,当我导航到该 url 时,延迟加载的路由 SubModule 到 SuperSubModule 会出错。错误是:
ERROR 错误:未捕获(承诺中):TypeError:无法读取属性 未定义类型错误的“调用”:无法读取属性“调用” 不明确的 在 o(引导程序:63) 在 ZoneDelegate.invoke (zone.js:396) 在 Object.onInvoke (main.js:1) 在 ZoneDelegate.invoke (zone.js:395) 在 Object.onInvoke (core.js:39699) 在 ZoneDelegate.invoke (zone.js:395) 在 Zone.run (zone.js:153) 在 zone.js:894 在 ZoneDelegate.invokeTask (zone.js:431) 在 Object.onInvokeTask (main.js:1) 在 resolvePromise (zone.js:836) 在 resolvePromise (zone.js:795) 在 zone.js:897 在 ZoneDelegate.invokeTask (zone.js:431) 在 Object.onInvokeTask (main.js:1) 在 ZoneDelegate.invokeTask (zone.js:430) 在 Object.onInvokeTask (core.js:39680) 在 ZoneDelegate.invokeTask (zone.js:430) 在 Zone.runTask (zone.js:198) 在 drainMicroTaskQueue (zone.js:611)
当我再次单击该模块的 url 时,错误是: ERROR 错误:未捕获(承诺中):错误:未找到“未定义”的 NgModule 元数据。
错误:未找到“未定义”的 NgModule 元数据。 在 lg.resolve (compiler.js:20900) 在 Th.getNgModuleMetadata (compiler.js:20029) 在 Jg._loadModules (compiler.js:25824) 在 Jg._compileModuleAndComponents (compiler.js:25807) 在 Jg.compileModuleAsync (compiler.js:25769) 在 useClass.compileModuleAsync (platform-browser-dynamic.js:223) 在 c.project (router.js:6406) 在 c._tryNext (mergeMap.js:46) 在 c._next (mergeMap.js:36) 在 c.next (Subscriber.js:50) 在 resolvePromise (zone.js:836) 在 resolvePromise (zone.js:795) 在 zone.js:897 在 ZoneDelegate.invokeTask (zone.js:431) 在 Object.onInvokeTask (main.js:1) 在 ZoneDelegate.invokeTask (zone.js:430) 在 Object.onInvokeTask (core.js:39680) 在 ZoneDelegate.invokeTask (zone.js:430) 在 Zone.runTask (zone.js:198) 在 drainMicroTaskQueue (zone.js:611)
有人知道如何解决这个问题吗?欢迎任何反馈,我已经被这个问题困扰了好几天了。 提前致谢! 编辑:这只发生在生产模式和使用单水疗时,而不是在生产模式下独立服务时。
【问题讨论】:
我也有同样的问题。 我的解决方案位于:single-spa.js.org/docs/faq/#code-splits 您必须执行解决方案 1 和 2 才能使其正常工作,在我们的案例中 2 被遗忘了。 @Hack 【参考方案1】:答案在 single-spa 的常见问题解答中: https://single-spa.js.org/docs/faq/#code-splits 您必须执行解决方案 1 和 2 才能使其正常工作,在我们的案例中 2 错过了。
【讨论】:
以上是关于延迟加载模块中的 Angular single-spa 延迟加载路由调用未定义的 webpack 错误的主要内容,如果未能解决你的问题,请参考以下文章