Tôi nhận được lỗi liên quan đến các gói con @intlayer/*
Vấn đề này thường xảy ra sau khi cập nhật các gói Intlayer.
Ví dụ về thông báo lỗi:
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"; | ~~~~~~~~~~~~~~~~✖ LỖI Không có export phù hợp trong "node_modules/@intlayer/config/dist/esm/client.mjs" cho import "configESMxCJSRequire"node_modules/@intlayer/unmerged-dictionaries-entry/dist/esm/index.mjs:3:27:3 | import { clearModuleCache, configESMxCJSRequire } from "@intlayer/config"; | ~~~~~~~~~~~~~~~~~~~~Nguyên nhân
Các gói cơ sở như intlayer, react-intlayer, react-native-intlayer, vue-intlayer đang tái sử dụng cùng các gói con như @intlayer/config, @intlayer/core, @intlayer/types để tránh trùng lặp mã nguồn.
Giữa hai phiên bản, các exports của các gói con không được đảm bảo là giống nhau. Để hạn chế vấn đề này, intlayer cố định phiên bản của các gói con theo phiên bản của gói chính.
Ví dụ: intlayer@1.0.0 sử dụng @intlayer/config@1.0.0, @intlayer/core@1.0.0, @intlayer/types@1.0.0
(Ngoại trừ @intlayer/swc), các gói con @intlayer/* không được thiết kế để sử dụng trực tiếp. Vì vậy, chúng tôi khuyến nghị không cài đặt chúng trực tiếp.
Cách khắc phục
- Đảm bảo phiên bản của gói chính và các gói con là giống nhau.
{ "dependencies": { "intlayer": "7.0.1", "react-intlayer": "7.0.0", // Phiên bản sai, nên là 7.0.1 }, "devDependencies": { "intlayer-editor": "7.0.1", },}- Thử xóa file khóa (lockfile) và thư mục node_modules rồi cài đặt lại các dependencies.
Đôi khi, trình quản lý gói giữ lại phiên bản cũ của các gói con trong file khóa (lockfile) trong bộ nhớ đệm. Để khắc phục, bạn có thể thử xóa file khóa và thư mục node_modules rồi cài đặt lại các dependencies.
rm -rf package-lock.json node_modulesnpm install- Kiểm tra cài đặt toàn cục (global)
Chúng tôi khuyến nghị cài đặt intlayer hoặc intlayer-cli ở mức toàn cục để truy cập các lệnh CLI. Nếu phiên bản toàn cục không giống với phiên bản cục bộ, trình quản lý gói có thể sử dụng phiên bản sai.
Kiểm tra xem một gói có được cài đặt toàn cục không
npm list -g --depth=0npm list -g --depth=0 | grep intlayeryarn global listpnpm list -g --depth=0Khắc phục xung đột phụ thuộc toàn cục tiềm ẩn
npm uninstall -g intlayer intlayer-cliyarn global remove intlayer intlayer-clipnpm remove -g intlayer intlayer-cli- Thử làm sạch bộ nhớ đệm
Đối với một số môi trường như docker, github actions, hoặc các nền tảng lưu trữ web như Vercel, có thể tồn tại bộ nhớ đệm. Bạn có thể thử làm sạch bộ nhớ đệm và thử cài đặt lại.
Bạn cũng có thể thử làm sạch bộ nhớ đệm của trình quản lý gói với lệnh sau:
npm cache clean --forceyarn cache cleanpnpm cache clean