„Nie można pobrać wiadomości z rejestru” podczas próby zainstalowania dowolnego modułu

355

Nie mogę zainstalować żadnego modułu węzła z npm.

npm install socket.io

Powyższe polecenie spowodowało spadek danych wyjściowych, nie można zainstalować socket.io

npm http GET https://registry.npmjs.org/socket.io

npm ERR! Error: failed to fetch from registry: socket.io
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!     <npm-@googlegroups.com>
npm ERR! 
npm ERR! System Linux 2.6.18-194.el5
npm ERR! command "node" "/opt/node0610/bin/npm" "install" "socket.io"
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: socket.io
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /opt/node0610/lib/node_modules/npm-debug.log
npm not ok

Moja wersja NPM to:

[applmgr@dev node_modules]$ npm --version
1.1.0-3

Moja wersja NodeJS to:

[applmgr@dev node_modules]$ node --version
v0.6.10
Dexter
źródło
12
To dość stara npmwersja. Zaktualizuj go do najnowszej wersji i spróbuj ponownie:sudo npm update npm -g
JohnnyHK
1
johny dzięki za komentarz, właściwie jeśli muszę zaktualizować npm, powinienem też zaktualizować nodejs
Dexter,
1
Nie musisz także aktualizować nodejs, ale polecam go, jeśli z jakiegoś powodu nie jesteś przywiązany do wersji 6.x.
JohnnyHK
HTTP działa; HTTPS tego nie robi, ponieważ register.npmjs.org nie nasłuchuje HTTPS.
Mark
1
Zwykle pobieram i kompiluję najnowszą wersję nodejs z oficjalnej strony . Dystrybucje, których używam (zazwyczaj Ubuntu LTS) mają zbyt starą wersję.
Alex Lokk

Odpowiedzi:

805

Miałem ten problem z npm v1.1.4(i node v0.6.12), które są Ubuntu 12.04wersjami repozytorium.

Wygląda na to, że ta wersja npmnie jest już obsługiwana, aktualizacja węzła (i npm z nim) rozwiązała problem.

Najpierw odinstaluj nieaktualną wersję (opcjonalnie, ale myślę, że to rozwiązało problem z brakiem łatania modułów globalnych).

sudo apt-get purge nodejs npm

Następnie włącz repozytorium nodesource i zainstaluj:

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

Uwaga - poprzednia rada polegała na korzystaniu z repozytorium Chrisa Lei, teraz migrował to do źródła węzłów, patrz:

Od: tutaj

John Carter
źródło
13
Zauważ, że pakiet nodejs zawiera npm i nodejs-dev, więc zainstalowanie nodejs z ppa daje ci wszystko, co potrzebne do npm.
chawkinsuf
2
Dzięki! To zadziałało dla mnie! To byłaby zaakceptowana odpowiedź na „Zapytaj Ubuntu”, ale wydaje się, że wielu użytkowników spoza Ubuntu uważa tę odpowiedź za pomocną.
dannyman
2
uruchomiłem to na raspbery pi i dostałem błąd segmentacji podczas uruchamiania nodejs lub npm
godzilla
5
Po skorzystaniu z tych instrukcji i otrzymaniu błędu segmentacji na raspberry pi (Raspbian) usunąłem port i postępowałem zgodnie z tymi instrukcjami gist.github.com/justinjenkins/16adc15338bb265f6808, teraz to działa!
Justin Jenkins
2
-1 za zalecenie, by niczego niepodejrzewający niczego nowi użytkownicy zrobili coś tak nierozsądnego i niebezpiecznego jak przesyłanie kodu z niezweryfikowanego źródła w Internecie do powłoki roota . Nieodpowiedzialny prawie go nie obejmuje. Powinieneś mieć przynajmniej zastrzeżenie dotyczące bezpieczeństwa, jeśli nie zalecenie weryfikacji sumy kontrolnej.
sorpigal
644

https://github.com/isaacs/npm/issues/2119

Musiałem wykonać poniższe polecenie:

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

Spowoduje to jednak utworzenie npmpakietów instalacyjnych przez niepewne połączenie HTTP. Jeśli możesz, powinieneś się trzymać

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

zamiast tego zainstalować przez HTTPS.

Dexter
źródło
6
Tak, to też zrobiło to dla mnie. Dzięki za udostępnienie!
Alix Axel
7
Używam malinowego pi i to jest to samo polecenie, którego musiałem użyć. zmieniono register.npmjs.org/pi-gpio na register.npmjs.org/pi-gpio . Nie jestem pewien, co
słychać
28
Ostrzeżenie: pociąga to za sobą zasoby przez połączenie / niepewne /. Twoje pliki mogą zostać zmienione, zanim je zdobędziesz. Znowu: to nie jest bezpieczne.
Lodewijk
38
Nie używaj tego niezabezpieczonego rozwiązania, nawet jeśli działa. Wersja Node.js apt-get jest za stara (0.6.12); Zainstalowałem najnowszą stabilną wersję z GitHub i to rozwiązało problem.
Louis Ameline,
2
Nie będzie działać dla niektórych innych pakietów nodejs. Właśnie pobieram nowszą wersję node.js z oficjalnej strony i kompiluję ją ręcznie.
Alex Lokk
32

Jestem na Ubuntu. Użyłem apt-get, aby zainstalować węzeł. Pakiet Npm nie był zawarty w tym pakiecie, więc musiał zostać zainstalowany osobno. Zakładałem, że to zadziała, ale najwyraźniej wersja npm w dystrybucji Ubuntu była przestarzała.

Węzeł wiki ma następującą instrukcję:

Uzyskanie najnowszej wersji Node lub instalacja na starszym Ubuntu i innych dystrybucjach opartych na apt może wymagać kilku dodatkowych kroków. Przykładowa instalacja:

sudo apt-get update
sudo apt-get install -y python-software-properties python g++ make
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

Potem npm został już włączony i działał idealnie.

geon
źródło
18

Dla mnie jest to zwykle problem z serwerem proxy i próbuję wszystkiego:

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

npm config set proxy http://myusername:[email protected]:8080
npm config set https-proxy http://myusername:[email protected]:8080
set HTTPS_PROXY=http://myusername:[email protected]:8080
set HTTP_PROXY=http://myusername:[email protected]:8080
export HTTPS_PROXY=http://myusername:[email protected]:8080
export HTTP_PROXY=http://myusername:[email protected]:8080
export http_proxy=http://myusername:[email protected]:8080

npm --proxy http://myusername:[email protected]:8080 \
--without-ssl --insecure -g install
Katie
źródło
4
Wyłączanie ścisłego protokołu SSL za pomocą funkcji npm config set strict-ssl falsewroked dla mnie.
Mayura
17

Musisz także zainstalować wspólne właściwości oprogramowania, aby repozytorium add-apt działało. tak będzie

sudo apt-get purge nodejs npm
sudo apt-get install -y python-software-properties python g++ make software-properties-common
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs
Tuszar
źródło
3
Po powyższych krokach wszyscy musimy zrobić: sudo npm install -g karma
vijay
10

Jedną rzeczą, która działała dla mnie z przypadkowymi błędami instalacji npm (gdzie pakiet, który wyskakuje, jest różny w różnych czasach (ale w tym samym środowisku) jest użycie tego:

npm cache clean

A następnie powtórz proces. Następnie proces wydaje się przebiegać płynniej i pojawia się prawdziwy problem i komunikat o błędzie, w którym można go naprawić, a następnie kontynuować.

Opiera się to na doświadczeniu z uruchamianiem npm całej gamy pakietów w ramach dość czystej instalacji Ubuntu wewnątrz instancji Docker. Czasami w Ubuntu brakuje narzędzi do kompilacji / tworzenia, a błędy npm nie pokażą prawdziwego problemu, dopóki z jakiegoś powodu nie wyczyścisz pamięci podręcznej.

Edward Tan
źródło
Tak, stwierdziłem, że muszę to uruchomić w połączeniu z odpowiedzią z tego miejsca.
John Powell
7

Ten problem wynika z protokołu https, dlatego działa inne rozwiązanie (przełączając się na protokół niezabezpieczony).

Dla mnie najlepszym rozwiązaniem było skompilowanie najnowszej wersji węzła, która zawiera npm

apt-get purge nodejs npm
git clone https://github.com/nodejs/node ~/local/node
cd ~/local/node
./configure
make
make install
Venar303
źródło
6

Są teraz oficjalne instrukcje od joyent (główny obrońca nodejs). W przypadku Ubuntu:

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

W przypadku innych dystrybucji Uniksa, OSX i Windows patrz link. Uwaga: zainstaluje to zarówno węzeł, jak i npm.

Brian Low
źródło
5

Jedyna rzecz, która działała dla mnie w elementarnym systemie operacyjnym Luna, widelec Ubuntu. Jestem na architekturze x86. Próbowałem tutaj wszystkich odpowiedzi, ale w końcu zdecydowałem się zainstalować go ze źródła.

Najpierw upewnij się, że nie jest zainstalowany za pomocą menedżera pakietów:

sudo apt-get purge nodejs npm -y

Poszedłem na stronę pobierania, aby wyszukać najnowsze źródło i pobrać je, http://nodejs.org/download/ . Aby go uzyskać, możesz użyć curl, wget lub przeglądarki:

wget http://nodejs.org/dist/v0.10.34/node-v0.10.34.tar.gz
tar -xvf node-v0.10.34.tar.gz 
cd node-v0.10.34
./configure
make
sudo make install

Marka może chwilę potrwać. Po zakończeniu powinieneś mieć zainstalowany węzeł i npm i pracować w katalogu / usr / local / bin, który powinien już znajdować się na twojej ścieżce. Powinieneś sprawdzić, gdzie mieszka:

which npm node

Musiałem także zmienić uprawnienia, aby działało:

sudo chown -R $USER /usr/local

Jeśli to nie zadziała, sprawdź swoją ścieżkę:

echo $PATH

Pamiętaj, że zainstalowanie go w ten sposób nie będzie zarządzane przez menedżera pakietów apt-get. Twoje zdrowie!

radtek
źródło
Podaj, na czym polega problem, zamiast zaznaczać to. Mi to pasuje! :)
radtek,
2

Poniższa metoda działała dla mnie, Kudos na użytkownika github: midnightcodr

Upewnij się, że usunąłeś już wszystkie zainstalowane pakiety nodejs / npm.

sudo apt-get purge nodejs

sudo apt-get purge npm

Teraz zainstaluj Node js używając poniższego polecenia (Dzięki midnightcodr na github)

curl -L https://raw.github.com/midnightcodr/rpi_node_install/master/setup.sh | bash -s 0.10.24

Zauważ, że możesz wywoływać węzeł za pomocą węzła poleceń, a nie węzłów.

Po zainstalowaniu węzła zainstaluj npm

sudo apt-get install npm
Eswar Rajesh Pinapala
źródło
2

Ostatnio miałem ten problem po aktualizacji node.js (i nieuchronnie npm) do najnowszej wersji:

> npm --version < 2.0.0-alpha-5

Uwaga: nie prosiłem o niestabilną wersję, po prostu ją dostałem brew install npmna OSX.

Obniżenie npm naprawiło dla mnie problem.

Najprostszym sposobem na zainstalowanie stabilnego NPM jest, npm install -g npmale w niektórych okolicznościach może on nie działać, dlatego może być konieczne obniżenie wersji node.js.

Michał Miszczyszyn
źródło
1

Możliwe, że w tym czasie rejestr NPM był wyłączony lub połączenie zostało zerwane.

Tak czy inaczej powinieneś zaktualizować węzeł i npm.

Polecam używanie nave do zarządzania środowiskami węzłów.

https://npmjs.org/package/nave

Umożliwia łatwe instalowanie wersji i szybkie przechodzenie między nimi.

serby
źródło
1

dla Raspberry Pi znalazłem i zmodyfikowałem rozwiązanie , które znalazłem
tutaj, uruchomiłem

sudo su -
cd /opt
wget http://nodejs.org/dist/v0.10.28/node-v0.10.28-linux-arm-pi.tar.gz
tar xvzf node-v0.10.28-linux-arm-pi.tar.gz
ln -s node-v0.10.28-linux-arm-pi node
chmod a+rw /opt/node/lib/node_modules
chmod a+rw /opt/node/bin
echo 'PATH=$PATH:/opt/node/bin' > /etc/profile.d/node.sh

Jedynym modem, jaki zrobiłem, była zmiana wszystkich 10.25 na 10.28, co było najnowszym linux-arm-pi w tym czasie

godżilla
źródło
0

@ stąd odpowiedź jest najlepsza. Jednak wersje Node poruszały się coraz wyżej i wyżej, a wersjonowanie było skomplikowane z powodu remontu io.js. Postępując zgodnie z instrukcjami zawartymi w jego odpowiedzi, skończysz z wersją Węzła 0.10.25- nie najnowszą wersją.

Nadal powinieneś usunąć wszystkie istniejące pakiety węzłów / npm

sudo apt-get purge nodejs npm

a następnie przejdź do strony instalacji deb deb nodesource na https://github.com/nodesource/distribution#debinstall .

Wszystkie wersje Node.js są wymienione na powyższej stronie wraz z poleceniami Linuksa, aby je zainstalować. I te pakiety będą działać zarówno na Debianie, jak i Ubuntu .

PS Jeśli chcesz uruchomić Node v4.4 lub nowszy na Ubuntu Precise lub Debian Wheezy, powinieneś przejrzeć informacje na temat uruchamiania na starszych dystrybucjach .

PPS Jeśli twój apt-get zawiedzie , skrypt nie zostanie ukończony (referencje Google zawiodły moje apt-get update). Powinieneś zobaczyć komunikaty o dodawaniu klucza podpisującego NodeSource do twojego klucza oraz końcową wiadomość z instrukcją Run 'apt-get install nodejs' to install Node.js.

PPPS npm jest instalowany z węzłem. Po zainstalowaniu możesz zaktualizować do najnowszej wersji npm za pomocąsudo npm install npm -g

timbo
źródło