无法在生产模式下联合组件
Can't federate components in production mode
我将 Angular 和 Webpack 5 Module Federation 用于微前端。我有 2 个应用程序(我们称它们为 app1 和 app2),我的主要应用程序 app1 是 app2 的联合组件。
在 app2 中,我公开的组件由我的主 module 导出,因此当我尝试联合某些组件时,我可以从我的 module 的导出部分获取它。在 dev mode 中一切正常,我可以获得公开的 module,检索导出的组件,然后使用 component factory resolver 在 app1 中我想要的位置创建它。
但是当我在生产中构建时(我使用 ng serve --prod 来重现生产环境并对其进行测试)我导出的组件不见了,但导入和提供者没有。这是我得到的 mod 规则:
MyApp2Module: class e
ɵfac: ƒ (t)
ɵinj:
imports: Array(1)
0: (12) [ƒ, ƒ, ƒ, ƒ, ƒ, ƒ, ƒ, ƒ, ƒ, ƒ, ƒ, ƒ]
length: 1
[[Prototype]]: Array(0)
providers: [ƒ]
[[Prototype]]: Object
ɵmod:
bootstrap: []
declarations: []
exports: []
id: null
imports: []
schemas: null
transitiveCompileScopes: null
type: class e
[[Prototype]]: Object
如您所见,在 ɵmod 中,我 没有导出组件 并且 没有声明 我希望在这里查看我的组件。我猜这是由于 AOT compilation 和优化,因为它在 dev mode 中工作。 AOT 是故意删除 ɵmod 中的所有内容吗?
按照建议在我的模块中使用静态字段修复了它 here。
我将 Angular 和 Webpack 5 Module Federation 用于微前端。我有 2 个应用程序(我们称它们为 app1 和 app2),我的主要应用程序 app1 是 app2 的联合组件。
在 app2 中,我公开的组件由我的主 module 导出,因此当我尝试联合某些组件时,我可以从我的 module 的导出部分获取它。在 dev mode 中一切正常,我可以获得公开的 module,检索导出的组件,然后使用 component factory resolver 在 app1 中我想要的位置创建它。
但是当我在生产中构建时(我使用 ng serve --prod 来重现生产环境并对其进行测试)我导出的组件不见了,但导入和提供者没有。这是我得到的 mod 规则:
MyApp2Module: class e
ɵfac: ƒ (t)
ɵinj:
imports: Array(1)
0: (12) [ƒ, ƒ, ƒ, ƒ, ƒ, ƒ, ƒ, ƒ, ƒ, ƒ, ƒ, ƒ]
length: 1
[[Prototype]]: Array(0)
providers: [ƒ]
[[Prototype]]: Object
ɵmod:
bootstrap: []
declarations: []
exports: []
id: null
imports: []
schemas: null
transitiveCompileScopes: null
type: class e
[[Prototype]]: Object
如您所见,在 ɵmod 中,我 没有导出组件 并且 没有声明 我希望在这里查看我的组件。我猜这是由于 AOT compilation 和优化,因为它在 dev mode 中工作。 AOT 是故意删除 ɵmod 中的所有内容吗?
按照建议在我的模块中使用静态字段修复了它 here。