npm LinuxWindowsmacOS

npm ERR! ERESOLVE unable to resolve dependency tree

  • Обновлено
  • Чтение ≈ 4 минуты

Краткий ответ

Исправьте конфликт peer-зависимостей или используйте --legacy-peer-deps.

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Кратко: причина, признак, действие
  4. Пошаговое решение
  5. Как правильно решать конфликт
  6. Флаги --legacy-peer-deps и --force
  7. Профилактика
  8. Где скачать и что открыть

#Что означает ошибка

Сообщение
ERESOLVE

Ошибка ERESOLVE появилась в npm 7: менеджер стал строго проверять peer-зависимости — требования пакетов к версиям библиотек, которые должны быть установлены рядом (например, плагин требует React 17, а в проекте React 18). Раньше npm лишь предупреждал, теперь отказывается ставить пакеты, если дерево зависимостей противоречиво.

Сообщение содержит конфликт версий: какая версия обнаружена (Found), какую ожидает пакет (peer) и откуда возникло требование. Сравните все эти значения с package.json и официальной таблицей совместимости.

Исправьте конфликт peer-зависимостей или используйте --legacy-peer-deps.

#Причины и решения

Возможная причинаКак узнатьЧто делать
Конфликт peerВерсии.Проявляется как «ERESOLVE» или близкий по смыслу сбой.Подберите.
Новый npm 7+Строго.Проявляется как «ERESOLVE» или близкий по смыслу сбой.--legacy-peer-deps.
Старый пакетУстарел.Проявляется как «ERESOLVE» или близкий по смыслу сбой.Обновите.
lock-файлСтарый.Проявляется как «ERESOLVE» или близкий по смыслу сбой.Пересоздайте.

#Кратко: причина, признак, действие

ПричинаКак узнатьЧто делать
Несовместимые peerDependenciesВ выводе указаны Found, Could not resolve dependency и требуемый peer-диапазонПодберите совместимое сочетание версий по документации; обновляйте пакет адресно.
В новом npm проявился старый конфликтНа npm 7+ установка стала строже, а старый пакет требует другую основную библиотекуИсправьте версии; --legacy-peer-deps лишь временная проверка на отдельной копии.
Устаревший пакет или плагинНет версии плагина, совместимой с текущей основной библиотекойЗамените пакет на поддерживаемый либо согласованно смените основную библиотеку.
Разошлись package.json и package-lock.jsonnpm ci сообщает несоответствие блокировки описанию проектаИзмените зависимости согласованно и обновите lock через npm install; не удаляйте его автоматически.

#Пошаговое решение

  1. Прочитайте именно конфликт версийОткройте терминал в корне проекта (папка с package.json), выполните node --version, npm --version и повторите npm install. В выводе найдите Found:, Could not resolve dependency и peer ... from ... — запишите названия и диапазоны версий. Если это чужой проект, не меняйте его зависимости без согласования с владельцем.
  2. Посмотрите зависимости проекта и блокировку версийВ редакторе откройте package.json и найдите пакеты из сообщения; проверьте также, есть ли package-lock.json. Команда npm ls ИМЯ_ПАКЕТА (подставьте фактическое имя) показывает установленную цепочку, но при сломанном дереве может завершиться ошибкой — это диагностический признак. Сравните требования peerDependencies с версиями в проекте. Не удаляйте package-lock.json автоматически: он нужен для воспроизводимой сборки.
  3. Подберите совместимые версии по документацииПерейдите в официальную документацию или реестр npm для конфликтующего пакета, откройте раздел peerDependencies и таблицу совместимости. Найдите версию пакета, которая поддерживает вашу основную библиотеку (например, React, ESLint, Angular), а не просто последнюю. Внесите только согласованное изменение в package.json, затем выполните npm install. Проверьте npm ls и соберите проект командой из его scripts, например npm run build, если такой сценарий существует.
  4. Используйте обход только для временной диагностикиЕсли нужно временно оценить совместимость, в отдельной ветке Git или копии проекта можно попробовать npm install --legacy-peer-deps. Этот параметр игнорирует контракт peerDependencies и может установить несовместимый набор; он не является основным решением. После проверки удалите временную ветку или верните исходные файлы, а не устанавливайте npm config set legacy-peer-deps true для всех проектов.
  5. Не подменяйте совместимость overrides и очисткойПоле overrides меняет разрешение вложенных зависимостей, но само по себе не устраняет несовместимый peer API. Не делайте массовое rm -rf node_modules package-lock.json: это ухудшает воспроизводимость. Если зависимости повреждены, сохраните package-lock.json и на чистой рабочей копии запустите npm ci только если блокировка версий уже согласована с package.json.
  6. Проверьте установленное дерево и работу программыПосле выбранного исправления выполните npm ls и проектные тесты/сборку (npm test или npm run build — только если скрипты определены в package.json). Убедитесь, что ошибка ERESOLVE исчезла и приложение работает. При конфликте, который невозможно согласовать, сохраните вывод команд с названиями пакетов и обратитесь к владельцу проекта; не публикуйте закрытые адреса и токены npm.

#Как правильно решать конфликт

Надёжные варианты: выбрать выпуск конфликтующего пакета, совместимый с версией основной библиотеки, либо согласованно обновить/понизить основную библиотеку. Поле overrides меняет вложенные зависимости, но не гарантирует устранения несовместимого peer API и не должно служить автоматическим решением.

#Флаги --legacy-peer-deps и --force

Флаг --legacy-peer-deps возвращает поведение npm 6: peer-зависимости не проверяются. Он удобен, чтобы запустить старый проект, но скрывает реальную несовместимость, которая может проявиться ошибками во время работы. Флаг --force ещё агрессивнее: он ставит пакеты вопреки конфликтам. Используйте их как временную меру, а не как постоянное решение.

#Профилактика

Храните и проверяйте package-lock.json вместе с package.json в системе контроля версий; обновляйте зависимости небольшими согласованными группами. Если проекту требуется особый режим npm, документируйте его в инструкции проекта, но не включайте глобально небезопасный обход peer-проверки.

Linux · Терминал (Bash)Команда
Показывает, какие версии библиотек ожидает пакет. Замените react-scripts на нужный пакет.
npm view react-scripts peerDependencies
Linux · Терминал (Bash)С осторожностью
Только временная проба в отдельной ветке Git или копии проекта после сохранения файлов. Игнорирование peerDependencies может дать неисправное приложение; не используйте команду как окончательное исправление.
npm install --legacy-peer-deps

Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

#Где скачать и что открыть

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.