npm WindowsLinuxmacOSNode.jsnpm

npm: npm ci сообщает о несоответствии package-lock.json

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

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

Выполнение npm ci останавливается, когда описание зависимостей в package.json не совпадает с package-lock.json или lock-файл был создан при других настройках разрешения дерева. Команда npm ci намеренно НЕ исправляет lock-файл: это защита воспроизводимой установки.

В этой статье
  1. Как проявляется ошибка и когда применим способ
  2. Причины и признаки
  3. Пошаговая диагностика и решение
  4. Проверка результата и действия при повторении

#Как проявляется ошибка и когда применим способ

Выполнение npm ci останавливается, когда описание зависимостей в package.json не совпадает с package-lock.json или lock-файл был создан при других настройках разрешения дерева. Команда npm ci намеренно НЕ исправляет lock-файл: это защита воспроизводимой установки.

#Причины и признаки

Возможная причинаКак узнатьЧто делать
Файлы не согласованыВ package.json изменили диапазон версии или добавили пакет, но не обновили lock-файл.npm ci печатает сообщение о несовпадении ожидаемого набора пакетов.Пересоздать согласованный lock-файл через npm install в рабочей ветке.
Разные параметры установкиLock был получен с особым правилом peer dependencies.Локальная npm install проходит, а npm ci в сборочном окружении завершается ошибкой дерева зависимостей.Сверить .npmrc и параметры установки.

#Пошаговая диагностика и решение

  1. 1. Установите исходные условияОткройте терминал в папке проекта, где лежит package.json. Выполните указанные ниже команды без прав администратора; сравните версию Node.js и npm с журналом успешной сборки. Если package-lock.json отсутствует, команда npm ci не предназначена для этого проекта до его создания.
  2. Читают версии и параметры текущего проекта; не изменяют данные
    Linux · Терминал (Bash)Команда
    Читают версии и параметры текущего проекта; не изменяют данные.
    node --version
    npm --version
    npm pkg get name
    npm config get legacy-peer-deps
  1. 2. Сохраните исходные файлыСкопируйте package.json, package-lock.json и проектный .npmrc в отдельный каталог, затем создайте рабочую ветку Git или копию каталога. Убедитесь, что в Git нет незакоммиченных изменений, которые нельзя потерять. Не запускайте npm ci в рабочей папке: команда удаляет имеющийся node_modules.
  1. 3. Найдите различие между двумя файламиОткройте package.json и package-lock.json редактором, сравните имя и диапазон версии проблемного пакета. Проверьте секцию packages[""], где находится состояние корневого проекта в современных lock-файлах. Если менялся пакет, который не попал в lock, это и есть вероятная причина; вручную не переписывайте его контрольные суммы.
  1. 4. Проверьте настройки формирования дереваОткройте .npmrc в корне проекта, если файл существует, и проверьте значения legacy-peer-deps и install-links. Если lock создан с нестандартным флагом, тот же проектный параметр нужен при npm ci; меняйте только проверенную настройку и сохраните .npmrc под контролем версий. Не проставляйте legacy-peer-deps=true без доказанного основания.
  1. 5. Согласуйте зависимости в копии проектаНа отдельной ветке, имея сохранённый lock-файл, выполните npm install; она может обновить package-lock.json. После этого просмотрите diff и проверьте, что изменились ожидаемые версии. Если diff затрагивает десятки посторонних пакетов, не принимайте его автоматически: сравните версии npm и проектные настройки.
  2. Дополнительная команда по теме
    Linux · Терминал (Bash)С осторожностью
    npm install может изменить lock-файл и выполнить скрипты зависимостей; только на проверяемой копии.
    npm install
    git diff -- package.json package-lock.json

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

  1. 6. Проверьте чистую установкуВ тестовой копии снова выполните npm ci. Команда должна завершиться без ошибки согласования и установить зависимости заново. Если остался конфликт peerDependencies, найдите его по первому ошибочному блоку; не применяйте --force как универсальное исправление.
  2. Дополнительная команда по теме
    Linux · Терминал (Bash)С осторожностью
    Удаляет и создаёт node_modules внутри текущего проекта; не запускайте в рабочем окружении без резервной копии.
    npm ci

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

  1. 7. Закрепите результат для сервераЗафиксируйте проверенный package-lock.json и необходимые настройки .npmrc в Git, используйте один режим npm ci при локальной сборке и на сервере. Если исправление невозможно, восстановите сохранённые файлы и вернитесь к несовместимым версиям зависимостей, а не к полному удалению проекта.

#Проверка результата и действия при повторении

Успех: npm ci в чистой копии устанавливает пакетное дерево, package-lock.json не изменился во время npm ci, а тестовая сборка проекта проходит. Если локально всё работает, но на сервере нет — сравните версии npm/Node.js, .npmrc и команду запуска сборки.

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

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

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

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