npm ERR! при установке пакетов

mr. Cooper 2 дня назад Веб-разработка
npm ERR! при установке пакетов

Сообщение вида npm ERR! - это общий индикатор сбоя установки. Чтобы понять причину, важно смотреть строки выше в логе.

Обычно проблема связана с:

  • повреждённым кешем npm

  • несовместимостью версий Node.js

  • ошибками в package.json

Что можно сделать

Очистить кеш npm:

npm cache clean --force

Удалить зависимости и установить заново:

rm -rf node_modules package-lock.json
npm install

Проверить версию Node.js:

node -v
npm -v

Если версия устарела - лучше переключиться через nvm.

npm install зависает и не скачивает зависимости

Когда установка «зависает», чаще всего причина в сети, реестре npm или прокси.

Типичные причины:

  • медленное соединение или блокировка сети

  • проблемы с registry

  • антивирус или корпоративный firewall

Решения

Сменить registry:

npm config set registry https://registry.npmjs.org/

Запустить установку с подробным логом:

npm install --verbose

Отключить audit и progress (иногда ускоряет процесс):

npm install --no-audit --no-progress

Если проблема повторяется - стоит проверить доступ к интернету без VPN или прокси.

Ошибка ECONNREFUSED при npm install

ECONNREFUSED означает, что соединение с сервером было отклонено.

Чаще всего это:

  • блокировка сети

  • прокси без правильной настройки

  • недоступность npm registry

Решение

Проверить доступ к registry:

curl https://registry.npmjs.org/

Сбросить прокси настройки:

npm config delete proxy
npm config delete https-proxy

Если используешь VPN - попробуй переключить или отключить его.

Node.js сервер не запускается: порт уже занят

Ошибка вида:

Error: listen EADDRINUSE: address already in use :::3000

означает, что порт уже используется другим процессом.

Как найти и освободить порт

Linux/macOS:

lsof -i :3000
kill -9 PID

Windows:

netstat -ano | findstr :3000
taskkill /PID <PID> /F

Альтернатива - сменить порт в коде:

const PORT = process.env.PORT || 3001;

app.listen(PORT, () => {
  console.log(`Server running on ${PORT}`);
});

Node.js process.exit() не завершает процесс корректно

Иногда кажется, что process.exit() «не работает», но на самом деле процесс удерживают:

  • открытые соединения (DB, HTTP server)

  • таймеры (setInterval, setTimeout)

  • незакрытые потоки

Пример проблемы

setInterval(() => {
  console.log("running...");
}, 1000);

process.exit(); // не завершит процесс нормально

Правильный подход

Сначала нужно закрыть все ресурсы:

server.close(() => {
  console.log("Server closed");
  process.exit(0);
});

Если есть таймеры:

clearInterval(intervalId);

Итог

Большинство ошибок npm и Node.js связаны не с самим фреймворком, а с окружением: сетью, портами, версиями и процессами. Правильная диагностика - ключевой шаг. Начинать стоит всегда с логов, проверки версии Node.js и состояния сети.

Комментарии

Пока нет комментариев. Будьте первым, кто напишет.

Чтобы оставить комментарий, войдите в аккаунт.

Похожие статьи