Модульная федерация - webpack считывает неправильные версии зависимостей из package.json

Внутри моей настройки Module Federation у меня есть хост-приложение, которое использует несколько удаленных приложений. Все они разделяют зависимости angular framework как синглтоны. Это файл хоста webpack.config.json:

      new ModuleFederationPlugin({
  remotes: {
    mf1: "mf1@http://localhost:3000/remoteEntry.js",
    buy: 'buy@http://localhost:3002/remoteEntry.js',
    logo: 'logo@http://localhost:3003/remoteEntry.js'
  },

  shared: {
    "@angular/core": { singleton: true, },
    "@angular/common": { singleton: true, },
    "@angular/router": { singleton: true, },
  },
}),

В обоих хостах и ​​удаленных версиях Angular определены как ^11.0.0. Фактические установленные версии: host: 11.0.0, удаленный: 11.0.9.. Поклонись из-за определения внутри package.json а фактические версии совместимы в соответствии с семантическим управлением версиями, я ожидал, что веб-пакет просто загрузит самую высокую совместимую версию Angular (т.е. 11.0.9) однажды. Вместо этого я получаю предупреждение Unsatisfied version 11.0.9 of shared singleton module @angular/core (required =11.0.0). Что делает =11.0.0родом из? Почему не распознает webpack, что версии должны быть совместимы?

1 ответ

Я бы действительно уточнил requiredVersionв конфигурации плагина и не полагайтесь на то, что он просто прочитал его из вашего. Проблема в том, что он не просто прочитает ваш корень, он также прочитает package.json любых модулей, которые вы используете из своего node_modules которые сами также требуют / импортируют @angular/core. Это означает, что вы получите фактический общий «манифест», который включает множество различных возможных диапазонов версий, что может вызвать те ошибки, которые вы видите.

Другие вопросы по тегам