Ошибка NPM «не удалось получить из реестра» при установке модуля

При использовании NPM [https://en.wikipedia.org/wiki/Npm_%28software%29] для установки модуля для проекта вы можете столкнуться с такой неприятной ошибкой: $ npm install express --save npm http GET https : //registry.npmjs.org/express npm ERR! Ошибка: не удалось получить из реестра: express npm ERR! в /opt/node0610/lib/node_modules/npm/lib/utils/npm-registry-client/get.js:139:12 npm ERR! в cb (/opt/node0610/lib/node_modules/npm/lib/utils/npm-registry-client/request.js:32:9) npm ERR! в Re

При использовании NPM для установки модуля проекта вы можете столкнуться с такой неприятной ошибкой:

 $ npm install express --save 
 npm http GET https://registry.npmjs.org/express 
 
 npm ERR! Error: failed to fetch from registry: express 
 npm ERR! at /opt/node0610/lib/node_modules/npm/lib/utils/npm-registry-client/get.js:139:12 
 npm ERR! at cb (/opt/node0610/lib/node_modules/npm/lib/utils/npm-registry-client/request.js:32:9) 
 npm ERR! at Request._callback (/opt/node0610/lib/node_modules/npm/lib/utils/npm-registry-client/request.js:137:18) 
 npm ERR! at Request.callback (/opt/node0610/lib/node_modules/npm/node_modules/request/main.js:109:22) 
 npm ERR! at Request.<anonymous> (/opt/node0610/lib/node_modules/npm/node_modules/request/main.js:198:58) 
 npm ERR! at Request.emit (events.js:88:20) 
 npm ERR! at ClientRequest.<anonymous> (/opt/node0610/lib/node_modules/npm/node_modules/request/main.js:195:10) 
 npm ERR! at ClientRequest.emit (events.js:67:17) 
 npm ERR! at CleartextStream.<anonymous> (http.js:1134:11) 
 npm ERR! at CleartextStream.emit (events.js:67:17) 
 npm ERR! You may report this log at: 
 npm ERR! <http://github.com/isaacs/npm/issues> 
 npm ERR! or email it to: 
 npm ERR! < [email protected] > 
 npm ERR! 
 npm ERR! System Linux 2.6.18-194.el5 
 npm ERR! command "node" "/opt/node0610/bin/npm" "install" "express" 
 npm ERR! cwd /opt/node0610/lib/node_modules 
 npm ERR! node -v v0.6.10 
 npm ERR! npm -v 1.1.0-3 
 npm ERR! message failed to fetch from registry: express 
 npm ERR! 
 npm ERR! Additional logging details can be found in: 
 npm ERR! /opt/node0610/lib/node_modules/npm-debug.log 
 npm not ok 

Как я выяснил в прошлом, существует довольно много причин, по которым вы можете получить ошибку «не удалось получить из реестра», поэтому вот несколько способов ее исправить.

Старая версия / версия NPM с ошибками

Как вы могли заметить из сообщения об ошибке выше, используемая версия npm довольно старая. В этом примере мы использовали Node v0.6.10 и npm v1.1.0-3. Известно, что эта версия имеет некоторые проблемы с Ubuntu 12.04, поэтому лучше всего обновить Node (и npm вместе с ним) до последней версии:

 $ sudo npm update npm -g 

Если вы хотите полностью переустановить, сначала нужно полностью удалить текущие исполняемые файлы Node / npm:

 $ sudo apt-get purge nodejs npm 

Затем переустановите, используя более обновленную версию, например, из Nodesource:

 $ curl -sL https://deb.nodesource.com/setup | sudo bash - 
 $ sudo apt-get install -y nodejs 

Или, что еще лучше, вы можете ознакомиться с этой статьей, чтобы получить более подробное руководство по установке Node.js в Ubuntu.

Не могу скачать через HTTPS

По тем или иным причинам некоторые люди не могут подключиться к реестру через HTTPS. Это можно исправить, установив в реестре использование HTTP:

 $ npm config set registry http://registry.npmjs.org/ 
 $ npm config set strict-ssl false 

Однако это не рекомендуется, поскольку в этом случае ваши пакеты будут загружены небезопасно. Было бы лучше найти настоящую основную причину, а не использовать подобный обходной путь.

Корпоративный прокси

Для многих людей основная причина на самом деле заключается в том, что в их сети используется прокси. В этом случае вы можете использовать следующие команды для настройки прокси HTTP и HTTPS:

 $ npm config set proxy http://user: [email protected] :8181 
 $ npm config set https-proxy http://user: [email protected] :8181 

Это сохранит новые конфигурации и позволит вам получить доступ к Интернету с помощью npm.

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus