Модульная федерация - 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
. Это означает, что вы получите фактический общий «манифест», который включает множество различных возможных диапазонов версий, что может вызвать те ошибки, которые вы видите.