RouterModule.forRoot() called twice
錯誤消息:
RouterModule.forRoot() called twice.
Lazy loaded modules should use RouterModule.forChild() instead.
Spartacus 版本:2.1.7
確保您的緩存(來自 CDN 和 ServiceWorker)已正確調整。 OCC調用也應該盡量緩存在CDN上。
我們查看了源代碼,尤其是旨在延遲加載的 HomeModule,并發現該方法存在一個過時的問題,結果導致報告的錯誤:
HomeModule 正在導入 B2cStorefrontModule,它在任何情況下都不應該被導入兩次,尤其是不應該被延遲加載。
任何延遲加載的模塊都應該只導入最必要的模塊以避免額外的性能影響,這對于像 B2cStorefrontModule(完整的 b2c 店面 recipe)這樣的配方模塊尤其重要。
如果你想在自定義模塊中提供配置,你應該使用 ConfigModule.withConfig() 或 provideConfig 實用程序 (https://sap.github.io/spartacus-docs/global-configuration-in-spartacus/)。
通常,在高度定制的店面中,我們建議根本不使用這些配方模塊,而是通過僅導入所需的模塊來構建個性化定制的店面。此外,我們正在棄用 3.x 中的 b2cStorefrontModule,并計劃完全刪除它以支持標準化的參考結構。你可以在這里閱讀:https://sap.github.io/spartacus-docs/reference-app-structure/
B2cStorefrontModule 將默認 b2c 店面的所有默認模塊包裝到一個巨大的模塊中,它允許快速設置店面(通過一次導入和提供 withConfig 配置的能力),因此它更適合快速設置 spartacus,而不是在其上構建復雜的自定義 .
本地執行和 CCv2(開發、階段或生產)之間的延遲加載不應該有任何差異。
總結
以上是生活随笔為你收集整理的RouterModule.forRoot() called twice的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一些关于 SAP Spartacus 组
- 下一篇: 工信部和国家体育总局公布2022年度智能