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 PIDWindows:
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 и состояния сети.
Комментарии
Чтобы оставить комментарий, войдите в аккаунт.