Angular 模块联合,具有用于 shell 和微前端的 Angular 核心的多个 Angular 版本

问题描述 投票:0回答:1

我正在使用角度模块联合库。我正在使用一个使用 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/

我认为该错误是由于多个角度版本造成的。但是,我不知道如何解决这个问题。

请提出一些解决方案。

angular micro-frontend angular-module-federation
1个回答
0
投票

目前,我们在我的工作中使用微型模块联合。

错误未捕获(承诺中):错误:NG0203:必须从注入上下文(例如构造函数)调用注入(),因为 shell 调用多个 Angular 版本(在您的情况下为 13 和 14)。

但是,我们唯一的解决方案是将 shell 应用程序迁移到更高的 Angular 版本。

© www.soinside.com 2019 - 2024. All rights reserved.