#Что означает ошибка
ELIFECYCLE
npm ERR! code ELIFECYCLE означает, что скрипт из package.json (build, start, install, postinstall) завершился с ошибкой. Сама ELIFECYCLE ничего не объясняет — причина находится выше в выводе.
Прокрутите журнал вверх до первой красной строки: там указаны модуль, файл и строка.
ELIFECYCLE означает, что скрипт из package.json завершился с ошибкой. Прочитайте лог выше, найдите первую реальную ошибку скрипта, проверьте зависимости и повторите сборку без удаления lock-файла.
#Причины и решения
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Ошибка сборки | Первый сбой внутри build/start/postinstall имеет файл, строку или текст компилятора | Исправьте конкретную ошибку, а не сообщение ELIFECYCLE. |
| Старые зависимости | Фактическая установленная версия пакета не соответствует требованиям сборщика | Сверьте lock-файл, список зависимостей и инструкции проекта. |
| Кэш | Повторяющаяся ошибка явно указывает на повреждённый файл кэша загрузки | Проверьте кэш только если есть подтверждающее сообщение, не очищайте автоматически. |
| Версия Node | node -v не соответствует engines/.nvmrc проекта | Переключите Node на совместимый релиз без удаления lock-файла. |
#Пошаговое решение
- Запустите скрипт отдельноОткройте терминал в корне проекта с
package.json. Выполните команду, которая привела к сбою (npm run build,npm run startили другую, указанную вашим проектом), и прочитайте журнал выше строкиELIFECYCLE. Найдите первое сообщение компилятора, проверки типов, отсутствующей команды или исключение: сам кодELIFECYCLEозначает только, что сценарий завершился ненулевым кодом. Если ошибка возникла внутриpostinstall, перед ручным запуском проверьте, что именно делает скрипт вpackage.json. - Найдите первую ошибку в выводеОткройте
package.jsonв редакторе → разделscripts; найдите имя проблемного сценария, напримерbuild. Запустите только его командойnpm run build -- --helpне требуется: вместо этого запустите штатноnpm run buildи внимательно прочитайте вывод; для диагностики npm можно добавить--loglevel verbose. Если скрипт запускаетvite,tscили другое средство, исправляйте первое конкретное сообщение этой программы. Запишите версию пакета и текст первой ошибки, не заменяйте выяснение причины переустановкой всего подряд. - Проверьте версию NodeВ том же терминале выполните
node -v,npm -v; откройте.nvmrcиenginesвpackage.json, если они есть. Если Node не соответствует требованиям, переключите версию штатным способом, затем повторите сценарий. Если ошибка связана с отсутствующим модулем, проверьте его название в зависимостях и наличие lock-файла. Для проектов сpackage-lock.jsonиспользуйтеnpm ciв чистой копии/рабочем каталоге после сохранения вручную добавленных файлов в node_modules; не удаляйте package-lock.json, поскольку он фиксирует согласованные версии. - Переустановите зависимостиЕсли npm установил зависимости, но сборка упала, выполняйте действия строго по первому сообщению. При
JavaScript heap out of memoryпроверьте фактически доступную память ОС/контейнера; параметрNODE_OPTIONS=--max-old-space-size=4096применяйте только при достаточном объёме ОЗУ и для согласованного запуска. Приgyp ERR!установите указанные компиляторы по документации зависимости, а не устаревший пакетwindows-build-tools. Приcommand not foundпроверьте точную запись сценария и локальные зависимости, не подменяйте команду произвольнымnpx. - Увеличьте память при необходимостиПовторите исходный сценарий и убедитесь, что он завершился кодом 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++ по документации конкретного модуля.
# Диагностика из корня проектаnode -vnpm -vnpm 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 и установлена ли соответствующая локальная зависимость.