我正在使用角度模块联合库。我正在使用一个使用 Angular 13.1.1 版本的 shell 应用程序。很少有微前端使用 Angular 13.1.1 版本。有一个微前端使用 Angular 14.2.6。使用 Angular 13.1.1 的微前端工作得很好。但是,当访问使用 Angular 14.2.6 的微前端应用程序时,我收到以下错误。
Subscriber.js:91 ERROR 错误:未捕获(承诺中):错误:NG0203:inject() 必须从注入上下文调用,例如构造函数、工厂函数、字段初始值设定项或与
EnvironmentInjector#runInContext
一起使用的函数。欲了解更多信息,请访问 https://angular.io/errors/NG0203
错误:NG0203:inject() 必须从注入上下文调用,例如构造函数、工厂函数、字段初始值设定项或与 EnvironmentInjector#runInContext
一起使用的函数。
我在shell应用程序的webpack.config.js中有以下配置
shared: share({ "@angular/core": { requiredVersion: 'auto' }, "@angular/common": { requiredVersion: 'auto' }, "@angular/common/http": { requiredVersion: 'auto' }, "@angular/router": { requiredVersion: 'auto' }, "@angular/animations": { requiredVersion: 'auto' }, ...sharedMappings.getDescriptors()})
以下网站也建议了这一点 https://www.angulararchitects.io/aktuelles/pitfalls-with-module-federation-and-angular/
我认为该错误是由于多个角度版本造成的。但是,我不知道如何解决这个问题。
请提出一些解决方案。
目前,我们在我的工作中使用微型模块联合。
错误未捕获(承诺中):错误:NG0203:必须从注入上下文(例如构造函数)调用注入(),因为 shell 调用多个 Angular 版本(在您的情况下为 13 和 14)。
但是,我们唯一的解决方案是将 shell 应用程序迁移到更高的 Angular 版本。