#Как проявляется ошибка и когда применим способ
После ручного удаления папки node_modules npm по-прежнему выдаёт ошибку разрешения дерева или устанавливает не те пакеты. Часто проблема находится в требованиях package.json, lock-файле, настройках peerDependencies, а не в содержимом удалённой папки.
#Причины и признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Несовместимые требованияДва пакета требуют разные версии одной peerDependency. | В ERESOLVE перечислены конкретные версии пакетов и требуемые диапазоны. | Подобрать совместимые версии зависимостей. |
| Конфигурация осталасьУдаление node_modules не меняет package-lock.json и .npmrc. | После новой установки воспроизводится прежняя структура дерева. | Проверить lock и настроенный реестр. |
#Пошаговая диагностика и решение
- 1. Остановите удаления и сохраните журналВ копии репозитория запустите установку один раз и запишите первую ошибку целиком, включая строки Found и Could not resolve dependency. Убедитесь, что работа ведётся рядом с нужным package.json. Не удаляйте package-lock.json: он помогает воспроизвести исходную ошибку.
- 2. Зафиксируйте настройки npmВ терминале проверьте версии и локальные настройки проекта, включая registry, legacy-peer-deps и omit. Если проект использует собственный .npmrc, прочитайте его без копирования токенов в сторонние сервисы. Результат позволит отличить конфликт версий от проблемы сети.
- Читают версии и безопасные параметры без изменения проектаLinux · Терминал (Bash)КомандаЧитают версии и безопасные параметры без изменения проекта.
node --versionnpm --versionnpm config get registrynpm config get legacy-peer-deps
- 3. Найдите реальный конфликтОткройте package.json и сравните версии пакетов, перечисленных в сообщении ERESOLVE. В npm explain ИМЯ_ПАКЕТА можно увидеть, кто зависит от пакета; если отсутствует дерево установки, используйте сообщение npm и lock-файл. Не подменяйте исследование установкой --force.
- Нужно заменить имя на конкретную зависимость из ошибки; не изменяет файловLinux · Терминал (Bash)КомандаНужно заменить имя на конкретную зависимость из ошибки; не изменяет файлов.
npm explain ИМЯ_ПАКЕТА
- 4. Проверьте lock-файл до чистой установкиСверьте package-lock.json и package.json. Если диапазон в package.json менялся, а lock нет, согласуйте их через npm install только на новой ветке Git. Если дерево не строится, сначала исправьте несовместимый диапазон, а затем повторите установку.
- Может поменять package-lock.json и запускать скрипты; только в копии доверенного проектаLinux · Терминал (Bash)С осторожностьюМожет поменять package-lock.json и запускать скрипты; только в копии доверенного проекта.
npm installКоманда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.
- 5. Проведите чистую проверкуПосле исправления требований используйте npm ci на отдельной копии с согласованным lock-файлом. Эта команда удаляет текущий node_modules. Если npm ci не прошла, ошибка всё ещё в заданных версиях, а не в остатках удалённой папки.
- Только в тестовой папке; удаляет node_modules и устанавливает дерево зановоLinux · Терминал (Bash)С осторожностьюТолько в тестовой папке; удаляет node_modules и устанавливает дерево заново.
npm ciКоманда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.
- 6. Проверьте проектные тесты и зафиксируйте результатВыполните предусмотренную package.json команду test или build, проверьте итоговый package-lock.json и список новых версий. Если проблема вернулась, откатите изменения package.json и package-lock.json через сохранённую ветку, затем исследуйте конкретный конфликт по логу.
#Проверка результата и действия при повторении
Чистая установка проходит повторно без ERESOLVE и тесты проекта успешны. Изменение конфигурации должно воспроизводиться у другого разработчика по зафиксированному package-lock.json; не принимайте единственный удачный запуск за исправление.
Если на указанном шаге результат отличается, остановитесь и запишите первое полное сообщение об ошибке, версию инструментов и проверенное состояние до исправления. Не переходите к опасным действиям на действующем проекте: повторите проверку на отдельной копии, верните сохранённые файлы и только затем выбирайте следующую причину.