При использовании 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.