Webpack модульная федерация – Ошибка: Неудовлетворительная версия 0.20.3 от xxxxx общего синглтона модуля xlsx (требуется =0.20.3/xlsx-0.20.3.tgz)

Вопрос или проблема

В нашем проекте на Angular мы использовали пакет xlxs версии 0.18.5, так как в нем была уязвимость от checkmarxOne. Мы обнаружили, что реестр для пакета xlsx изменился. Заменили версию на “0.20.3”, указав нижеприведенный URL в package.json – https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz

введите описание изображения здесь

После этого изменения я не могу скачать отчет Excel из приложения, в инструментах разработчика появляется ошибка, как показано ниже.

Ошибка: Неудовлетворительная версия 0.20.3 от xxxxx из общего одиночного модуля xlsx (требуемая =0.20.3/xlsx-0.20.3.tgz). Затем я обновил нижеуказанную запись в webpack.config.js. Это работает для некоторых микро-фронтендов, но не для всех.

введите описание изображения здесь

Я несколько раз проверял webpack.config.js, первоначально я обновил requiredversion: 0.20.3, а затем сменил на “0.20.3/xlsx-0.20.3.tgz”. Однако ошибка все еще остается. Я не хочу оставлять strictVersion: false в webpack.config.js. Есть ли какое-либо решение для этого? Заранее спасибо.

Ошибка в инструментах разработчика показана ниже на скриншоте.введите описание изображения здесь

Ответ или решение

Судя по предоставленной информации, вы столкнулись с проблемой несовместимости версии модуля xlsx в вашей конфигурации Webpack Module Federation. Рассмотрим, как можно решить эту проблему.

Анализ проблемы

Вы обновили версию xlsx до 0.20.3, но в результате началась ошибка: Unsatisfied version 0.20.3 from xxxxx of shared singleton module xlsx. Это показывает, что ваша текущая сборка Webpack не может удовлетворить требование, касающееся совместимости версий модуля xlsx.

Шаги для решения

  1. Проверьте все микрофронтенды:
    Убедитесь, что все микрофронтенды, которые используют модуль xlsx, обновлены до версии 0.20.3. Если у вас есть микрофронтенды, которые все еще используют старую версию xlsx, это может вызывать конфликт версий.

  2. Проверьте конфигурацию webpack.config.js:
    Убедитесь, что вы правильно задали конфигурацию для Module Federation. Например:

    shared: {
       xlsx: {
           singleton: true,
           strictVersion: true,
           requiredVersion: '0.20.3',
       },
    }

    В этом варианте strictVersion установлен в true, что означает, что все микрофронтенды должны использовать именно эту версию xlsx.

  3. Используйте корректный адрес:
    Убедитесь, что ваше приложение может загрузить пакет xlsx из указанного URL (https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz). Проверьте это, открыв адрес в браузере. Если адрес недоступен или содержит ошибки, это может вызвать проблемы в загрузке модуля.

  4. Очистка кэша и пересборка:
    Возможно, стоит очистить кэш npm и пересобрать проект. Вы можете сделать это с помощью следующих команд:

    npm cache clean --force
    npm install
  5. Проверьте зависимости:
    Иногда бывает полезно создать резервную копию package-lock.json и node_modules, затем удалить их и снова выполнить npm install.

  6. Логирование и диагностика:
    Проверьте логи вашего приложения и сетевые запросы в инструментах разработчика, чтобы увидеть, загружается ли модуль xlsx корректно или возникают ошибки.

  7. Тестирование:
    Если изменения все еще не решают проблему, попробуйте временно установить strictVersion в false для проверки. Это не является долгосрочным решением, но позволит вам временно обойти проблему и выявить, где именно возникает конфликт.

Заключение

Следуя вышеуказанным шагам, вы сможете исправить ошибку с несовместимостью версии модуля xlsx. Чтобы гарантировать, что все микрофронтенды используют совместимые версии библиотек, необходимо тщательно следить за их зависимостями. Если проблема не решается, рекомендуется обратиться за дополнительной поддержкой к сообществам разработчиков или документации Webpack.

Оцените материал
Добавить комментарий

Капча загружается...