1

我使用带角度的单水疗中心。我有一个外壳和一个子应用程序,当我的子应用程序具有延迟加载的模块时,RootModule 加载了加载 SubModule 的加载 SuperSubModule。所有这些路由都是延迟加载的路由。当我在没有 single-spa 和 single-spa webpack 配置的情况下为我的应用程序提供服务时,这可以正常工作。但是当我在生产模式和 aot 下构建我的应用程序时,当我导航到该 url 时,延迟加载的路由 SubModule 到 SuperSubModule 会出错。错误是:

错误错误:未捕获(承诺中):TypeError:无法读取未定义的属性“调用”类型错误:无法在对象的ZoneDelegate.invoke(zone.js:396)处读取未定义的属性“调用”(引导程序:63)。 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 时,错误是:错误错误:未捕获(承诺中):错误:未找到“未定义”的 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-b​​rowser-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。

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

4

1 回答 1

0

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

于 2020-03-06T10:38:37.340 回答