Отримую помилку, пов'язану з підпакетами @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 No matching export in "node_modules/@intlayer/config/dist/esm/client.mjs" for import "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 і перевстановити залежності.
Інколи пакетний менеджер зберігає стару версію sub-packages у lockfile або в кеші. Щоб виправити це, можна спробувати видалити lockfile та папку node_modules і перевстановити залежності.
rm -rf package-lock.json node_modulesnpm install # або yarn install або pnpm install або bun pm install- Перевірте версії локальних залежностей
Може статися, що ваш пакетний менеджер зберігає стару версію sub-packages у lockfile або в кеші.
Приклад intlayer@7.0.0 > @intlayer/config@7.0.0 > @intlayer/dictionary-entry@6.0.0.
Щоб виявити невідповідність між версіями локальних залежностей і версіями sub-packages, ви можете використати наступну команду:
npm list --depth=3 | grep intlayeryarn list --depth=3 | grep intlayerpnpm list --depth=3 | grep intlayerbun pm ls --depth=3 | grep intlayerНа Windows замініть | grep intlayer на | findstr intlayer або використайте PowerShell з Select-String -Pattern "intlayer".
- Перевірте глобальну інсталяцію
Ми рекомендуємо встановити intlayer або intlayer-cli глобально, щоб мати доступ до CLI-команд. Якщо глобальна версія відрізняється від локальної версії, пакетний менеджер може обрати невірну версію.
Перевірити, чи пакет встановлено глобально
npm list -g --depth=3 | grep intlayeryarn global list --depth=3 | grep intlayerpnpm list -g --depth=3 | grep intlayerbun pm ls -g --depth=3 | grep intlayerНа Windows замініть | grep intlayer на | findstr intlayer або використовуйте PowerShell з Select-String -Pattern "intlayer".
Виправте потенційні конфлікти глобальних залежностей
npm uninstall -g intlayer intlayer-cliyarn global remove intlayer intlayer-clipnpm remove -g intlayer intlayer-clibun pm rm -g intlayer intlayer-cli- Спробуйте очистити кеш
У деяких середовищах, таких як Docker, GitHub Actions або хостинг-платформи на зразок Vercel, може бути задіяний кеш. Спробуйте очистити кеш і повторити встановлення.
Ви також можете очистити кеш вашого пакетного менеджера за допомогою наступних команд:
npm cache clean --forceyarn cache cleanpnpm cache cleanbun pm cache clean- Спробуйте видалити папку .intlayer
Intlayer кешує зібрану версію самої себе в папці .intlayer/cache.
Цей кеш може бути пошкоджений, якщо версія intlayer відрізняється від версії, збереженої в кеші.
Ви можете спробувати видалити папку .intlayer і повторити збірку.
rm -rf .intlayer