Я получаю ошибку, связанную с суб-пакетами @intlayer/*
Эта проблема обычно возникает после обновления пакетов Intlayer.
Пример сообщения об ошибке:
Error: Cannot find module '@intlayer/types'TypeError: (0 , __intlayer_config_client.colorize) is not a functionat import { colorize } from '@intlayer/config';✖ ERROR No matching export in "node_modules/@intlayer/config/dist/esm/client.mjs" for import "clearModuleCache"node_modules/@intlayer/unmerged-dictionaries-entry/dist/esm/index.mjs:3:9:3 | import { clearModuleCache, configESMxCJSRequire } from "@intlayer/config"; | ~~~~~~~~~~~~~~~~✖ ERROR Нет соответствующего экспорта в "node_modules/@intlayer/config/dist/esm/client.mjs" для импорта "configESMxCJSRequire"node_modules/@intlayer/unmerged-dictionaries-entry/dist/esm/index.mjs:3:27:3 | import { clearModuleCache, configESMxCJSRequire } from "@intlayer/config"; | ~~~~~~~~~~~~~~~~~~~~Причина
Базовые пакеты, такие как intlayer, react-intlayer, react-native-intlayer, vue-intlayer, повторно используют одни и те же суб-пакеты, такие как @intlayer/config, @intlayer/core, @intlayer/types, чтобы избежать дублирования кода.
Между двумя версиями экспорты суб-пакетов не гарантируются быть одинаковыми. Чтобы ограничить эту проблему, intlayer фиксирует версию суб-пакетов на версии основного пакета.
Пример: intlayer@1.0.0 использует @intlayer/config@1.0.0, @intlayer/core@1.0.0, @intlayer/types@1.0.0
(За исключением @intlayer/swc), суб-пакеты @intlayer/* не предназначены для прямого использования. Поэтому мы рекомендуем не устанавливать их напрямую.
Решение
- Убедитесь, что версии основного пакета и суб-пакетов совпадают.
{ "dependencies": { "intlayer": "7.0.1", "react-intlayer": "7.0.0", // Неверная версия, должна быть 7.0.1 }, "devDependencies": { "intlayer-editor": "7.0.1", },}- Попробуйте удалить lockfile и папку node_modules, затем переустановить зависимости.
Иногда менеджер пакетов сохраняет старую версию суб-пакетов в lockfile или кэше. Чтобы исправить это, можно попробовать удалить lockfile и папку node_modules, а затем заново установить зависимости.
rm -rf package-lock.json node_modulesnpm install- Проверьте глобальную установку
Рекомендуется устанавливать intlayer или intlayer-cli глобально для доступа к CLI-командам. Если глобальная версия отличается от локальной, менеджер пакетов может использовать неправильную версию.
Проверка, установлен ли пакет глобально
npm list -g --depth=0npm list -g --depth=0 | grep intlayeryarn global listpnpm list -g --depth=0Исправление возможных конфликтов глобальных зависимостей
npm uninstall -g intlayer intlayer-cliyarn global remove intlayer intlayer-clipnpm remove -g intlayer intlayer-cli- Попробуйте очистить кэш
В некоторых средах, таких как docker, github actions или платформах веб-хостинга, например Vercel, может присутствовать кэш. Вы можете попробовать очистить кэш и повторить установку.
Также можно попробовать очистить кэш вашего менеджера пакетов с помощью следующей команды:
npm cache clean --forceyarn cache cleanpnpm cache clean