#Что означает ошибка
npm ERR! code ETIMEDOUT npm ERR! network request failed
Ошибка npm ERR! network timeout / ETIMEDOUT / ESOCKETTIMEDOUT означает, что npm не дождался ответа от реестра. Причины: медленная или нестабильная сеть, прокси, блокировка реестра, DNS-проблемы, перегрузка зеркала.
Проверьте доступность реестра и настройки прокси.
Затем увеличьте таймауты или смените реестр.
npm не может скачать пакеты: проблемы сети, прокси, блокировка реестра или неверные настройки. Проверьте доступ к реестру и настройки прокси.
#Причины и решения
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Временный сбой сети | npm ping к нужному реестру иногда не отвечает, другие адреса открываются с задержкой. | Проверить сеть и повторить разовую установку с ограниченными повторами. |
| Неверные настройки прокси | npm config get proxy или https-proxy содержит устаревший адрес. | Сверить конфигурацию с сетью организации; лишние настройки удалить адресно. |
| Нужный реестр недоступен | В npm config get registry указан адрес, который не открывается в текущей сети. | Проверить правильность адреса и разрешённый доступ; зеркало — только согласованное. |
| Сетевой фильтр / TLS | Браузер и npm по-разному обрабатывают корпоративный сертификат, журнал указывает на соединение. | Обратиться к администратору сети; не отключать TLS-проверку. |
#Пошаговое решение
- Проверьте связьОткройте терминал в каталоге проекта: VS Code → «Терминал» → «Новый терминал» или обычный PowerShell/Терминал. Запишите ошибку целиком, в том числе
ETIMEDOUT,ECONNRESET, адрес реестра и название пакета. Выполнитеnpm config get registry, затемnpm pingиnpm -v. При доступном реестре npm сообщит о получении ответа. Если сообщение относится к частному корпоративному реестру, проверять только публичныйregistry.npmjs.orgнедостаточно: уточните адрес и доступ у владельца проекта. - Проверьте прокси и VPNЕсли
npm pingне отвечает, проверьте открытие именно того адреса реестра в браузере и общее подключение к интернету. В терминале выполнитеnpm config get proxyиnpm config get https-proxy(пустое значение часто отображается какnull); на Windows дополнительно проверьте «Параметры» → «Сеть и Интернет» → «Прокси». Не удаляйте рабочий прокси компании: сначала уточните у администратора параметры и сертификат. Для личной сети без прокси можно убрать только ошибочно сохранённые значения командойnpm config delete proxyиnpm config delete https-proxy. - Увеличьте таймаутыЕсли сеть работает, но ответы медленные, для одного пробного запуска используйте
npm install --fetch-timeout=300000 --fetch-retries=3, где 300000 — миллисекунды. Перед запуском убедитесь, что находитесь в папке с нужнымpackage.jsonи сохранённымpackage-lock.json; эта команда может обновить зависимости в пределах ограничений. Для воспроизводимой установки по существующему lock-файлу предпочтительноnpm ci --fetch-timeout=300000 --fetch-retries=3, ноnpm ciудаляет и заново создаётnode_modules. При сохранении таймаута проверьте логи сети; дальнейшее увеличение времени не исправит недоступный сервер. - Очистите кэшЕсли сеть в порядке, а npm сообщает о повреждении кэша, проверьте его без удаления:
npm cache verify. Очисткаnpm cache clean --forceобычно не нужна при сетевых таймаутах и лишает возможности повторно использовать скачанное. Не удаляйтеpackage-lock.jsonи не запускайте глобальноеnpm updateдля решения таймаута: это изменит версии зависимостей и усложнит поиск причины. Сохраните журнал ошибки из папки, указанной npm, и проверьте доступное место на диске, если сообщение связано с записью кэша. - Смените реестр на зеркалоСмену реестра рассматривайте только если в организации утверждено зеркало или исходный реестр временно недоступен. Сначала проверьте в
package.json,.npmrcпроекта и настройках пользователя, какие зависимости являются приватными. Временный запускnpm ping --registry=https://registry.npmjs.org/покажет доступность официального реестра, не меняя постоянную настройку; для пробной установки можно передать--registry=..., если это допустимо. Не отправляйте учётные данные корпоративного реестра случайному зеркалу. После устранения причины повторите исходную команду и убедитесь, что пакеты установлены без ошибки. - Команды диагностики из папки проекта; не выводите секреты из .npmrc в публичный отчётLinux · Терминал (Bash)КомандаКоманды диагностики из папки проекта; не выводите секреты из .npmrc в публичный отчёт.
npm config get registrynpm pingnpm config get proxynpm config get https-proxy
#Проверка сети
Прокси и DNS проверяются только при подтверждённой сетевой проблеме. Не меняйте DNS на публичный в корпоративной сети без согласования: это может нарушить доступ к внутренним ресурсам.
#Таймауты и повторы
При ошибке сети не удаляйте package-lock.json и не очищайте весь кэш автоматически. Сначала проверьте текущий реестр, прокси, сетевые ограничения и журнал npm; при необходимости используйте разовые параметры таймаута из инструкции.
#Зеркала и корпоративная сеть
Если реестр недоступен, используйте зеркало: npm config set registry https://registry.npmmirror.com (вернуть: npm config set registry https://registry.npmjs.org/). Для корпоративных прокси укажите npm config set proxy http://host:port и https-proxy; сертификат прокси: npm config set cafile C:\certs\corp.pem. Проверьте файл .npmrc в проекте и в домашней папке — в них могут оставаться устаревшие настройки.
# Однократный пробный запуск при подтверждённой медленной сети:npm install --fetch-timeout=300000 --fetch-retries=3# Для проекта с корректным package-lock.json — АЛЬТЕРНАТИВА:# npm ci --fetch-timeout=300000 --fetch-retries=3Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.