Otrzymuję błąd związany z sub-pakietami @intlayer/*
Ten problem zwykle występuje po aktualizacji pakietów Intlayer.
Przykład komunikatu o błędzie:
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"; | ~~~~~~~~~~~~~~~~✖ BŁĄD Brak odpowiedniego eksportu w "node_modules/@intlayer/config/dist/esm/client.mjs" dla importu "configESMxCJSRequire"node_modules/@intlayer/unmerged-dictionaries-entry/dist/esm/index.mjs:3:27:3 | import { clearModuleCache, configESMxCJSRequire } from "@intlayer/config"; | ~~~~~~~~~~~~~~~~~~~~Powód
Podstawowe pakiety takie jak intlayer, react-intlayer, react-native-intlayer, vue-intlayer ponownie wykorzystują te same sub-pakiety jak @intlayer/config, @intlayer/core, @intlayer/types, aby uniknąć duplikacji kodu.
Między dwiema wersjami eksporty sub-pakietów nie są gwarantowane jako identyczne. Aby ograniczyć ten problem, intlayer przypisuje wersję sub-pakietów do wersji głównego pakietu.
Przykład: intlayer@1.0.0 używa @intlayer/config@1.0.0, @intlayer/core@1.0.0, @intlayer/types@1.0.0
(Z wyjątkiem @intlayer/swc), sub-pakiety @intlayer/* nie są przeznaczone do bezpośredniego użycia. Dlatego zalecamy, aby ich nie instalować bezpośrednio.
Rozwiązanie
- Upewnij się, że wersje głównego pakietu i sub-pakietów są takie same.
{ "dependencies": { "intlayer": "7.0.1", "react-intlayer": "7.0.0", // Nieprawidłowa wersja, powinna być 7.0.1 }, "devDependencies": { "intlayer-editor": "7.0.1", },}- Spróbuj usunąć plik blokady (lockfile) oraz folder node_modules i ponownie zainstalować zależności.
Czasami menedżer pakietów przechowuje starą wersję sub-pakietów w pliku blokady w pamięci podręcznej. Aby to naprawić, możesz spróbować usunąć plik blokady oraz folder node_modules i ponownie zainstalować zależności.
rm -rf package-lock.json node_modulesnpm install- Sprawdź instalację globalną
Zalecamy zainstalowanie intlayer lub intlayer-cli globalnie, aby mieć dostęp do poleceń CLI. Jeśli wersja globalna różni się od wersji lokalnej, menedżer pakietów może uznać niewłaściwą wersję.
Sprawdź, czy pakiet jest zainstalowany globalnie
npm list -g --depth=0npm list -g --depth=0 | grep intlayeryarn global listpnpm list -g --depth=0Napraw potencjalne konflikty zależności globalnych
npm uninstall -g intlayer intlayer-cliyarn global remove intlayer intlayer-clipnpm remove -g intlayer intlayer-cli- Spróbuj wyczyścić pamięć podręczną
W niektórych środowiskach, takich jak docker, github actions czy platformy hostingowe jak Vercel, może istnieć pamięć podręczna. Możesz spróbować wyczyścić pamięć podręczną i ponowić instalację.
Możesz także spróbować wyczyścić pamięć podręczną menedżera pakietów za pomocą następującego polecenia:
npm cache clean --forceyarn cache cleanpnpm cache clean