npm LinuxWindowsmacOS

npm ERR! code ELIFECYCLE — сбой скрипта

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

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

ELIFECYCLE означает, что скрипт из package.json завершился с ошибкой. Прочитайте лог выше, удалите node_modules и lock-файл и повторите установку.

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Пошаговое решение
  4. Поиск причины
  5. Чистая переустановка
  6. Нехватка памяти и права
  7. Типичные сообщения перед ELIFECYCLE и что они значат

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

Сообщение
ELIFECYCLE

npm ERR! code ELIFECYCLE означает, что скрипт из package.json (build, start, install, postinstall) завершился с ошибкой. Сама ELIFECYCLE ничего не объясняет — причина находится выше в выводе.

Прокрутите журнал вверх до первой красной строки: там указаны модуль, файл и строка.

ELIFECYCLE означает, что скрипт из package.json завершился с ошибкой. Прочитайте лог выше, найдите первую реальную ошибку скрипта, проверьте зависимости и повторите сборку без удаления lock-файла.

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

Возможная причинаКак узнатьЧто делать
Ошибка сборкиПервый сбой внутри build/start/postinstall имеет файл, строку или текст компилятораИсправьте конкретную ошибку, а не сообщение ELIFECYCLE.
Старые зависимостиФактическая установленная версия пакета не соответствует требованиям сборщикаСверьте lock-файл, список зависимостей и инструкции проекта.
КэшПовторяющаяся ошибка явно указывает на повреждённый файл кэша загрузкиПроверьте кэш только если есть подтверждающее сообщение, не очищайте автоматически.
Версия Nodenode -v не соответствует engines/.nvmrc проектаПереключите Node на совместимый релиз без удаления lock-файла.

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

  1. Запустите скрипт отдельноОткройте терминал в корне проекта с package.json. Выполните команду, которая привела к сбою (npm run build, npm run start или другую, указанную вашим проектом), и прочитайте журнал выше строки ELIFECYCLE. Найдите первое сообщение компилятора, проверки типов, отсутствующей команды или исключение: сам код ELIFECYCLE означает только, что сценарий завершился ненулевым кодом. Если ошибка возникла внутри postinstall, перед ручным запуском проверьте, что именно делает скрипт в package.json.
  2. Найдите первую ошибку в выводеОткройте package.json в редакторе → раздел scripts; найдите имя проблемного сценария, например build. Запустите только его командой npm run build -- --help не требуется: вместо этого запустите штатно npm run build и внимательно прочитайте вывод; для диагностики npm можно добавить --loglevel verbose. Если скрипт запускает vite, tsc или другое средство, исправляйте первое конкретное сообщение этой программы. Запишите версию пакета и текст первой ошибки, не заменяйте выяснение причины переустановкой всего подряд.
  3. Проверьте версию NodeВ том же терминале выполните node -v, npm -v; откройте .nvmrc и engines в package.json, если они есть. Если Node не соответствует требованиям, переключите версию штатным способом, затем повторите сценарий. Если ошибка связана с отсутствующим модулем, проверьте его название в зависимостях и наличие lock-файла. Для проектов с package-lock.json используйте npm ci в чистой копии/рабочем каталоге после сохранения вручную добавленных файлов в node_modules; не удаляйте package-lock.json, поскольку он фиксирует согласованные версии.
  4. Переустановите зависимостиЕсли npm установил зависимости, но сборка упала, выполняйте действия строго по первому сообщению. При JavaScript heap out of memory проверьте фактически доступную память ОС/контейнера; параметр NODE_OPTIONS=--max-old-space-size=4096 применяйте только при достаточном объёме ОЗУ и для согласованного запуска. При gyp ERR! установите указанные компиляторы по документации зависимости, а не устаревший пакет windows-build-tools. При command not found проверьте точную запись сценария и локальные зависимости, не подменяйте команду произвольным npx.
  5. Увеличьте память при необходимостиПовторите исходный сценарий и убедитесь, что он завершился кодом 0, создал ожидаемую сборку или запустил приложение. На Linux/macOS код предыдущей команды смотрите echo $?, в PowerShell — $LASTEXITCODE (не подставляйте их как часть npm-команды). Если повторяется ошибка, сохраните первые строки стека, версии Node/npm и сценарий из package.json для разработчика; не применяйте sudo npm, удаление lock-файлов и изменение прав всей папки без отдельной причины.

#Поиск причины

Запустите скрипт напрямую и прочитайте вывод: npm run build. Подробный журнал: npm run build --loglevel verbose, файл логов — ~/.npm/_logs/ (Windows %LocalAppData%\npm-cache\_logs). Типичные причины: ошибка в коде/TypeScript, не хватает переменных окружения, версия Node не подходит.

#Чистая переустановка

Не удаляйте package-lock.json: он закрепляет версии зависимостей. При повреждённой установке используйте npm ci на проверенной копии проекта, учитывая, что эта команда удаляет и заново создаёт node_modules. Используйте нужную версию Node (в .nvmrc или engines): nvm install 20 && nvm use 20. Старые проекты с node-sass требуют Python и компилятор — замените на sass.

#Нехватка памяти и права

Для JavaScript heap out of memory увеличьте память: export NODE_OPTIONS=--max-old-space-size=4096. Не используйте sudo npm; выясните конкретную причину запрета записи, используйте локальные зависимости вместо глобальной установки. Для Windows и нативных модулей установите Build Tools: актуальные средства компиляции Visual Studio Build Tools с требуемыми компонентами C++ по документации конкретного модуля.

Linux · Терминал (Bash)С осторожностью
Не удалять package-lock.json, не запускать rm -rf и не менять права автоматически.
# Диагностика из корня проекта
node -v
npm -v
npm run
# Запускайте только действительно существующий сценарий, например:
npm run build --loglevel verbose
# При наличии package-lock.json, после проверки node_modules:
# npm ci

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

#Типичные сообщения перед ELIFECYCLE и что они значат

exit code 1 с трассировкой webpack или vite — ошибка сборки в коде: исправьте импорт или тип. exit code 137 — процессу не хватило памяти (его убил OOM-killer): увеличьте память контейнера или CI. gyp ERR! find Python — для нативных модулей не найден Python, проверьте требования node-gyp к Python и настройки нужной версии npm. ENOENT spawn — программа из скрипта не установлена в PATH. exit code 127 — команда не найдена: проверьте, какая команда указана в scripts и установлена ли соответствующая локальная зависимость.

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

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

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