"Nachricht konnte nicht aus der Registrierung abgerufen werden" beim Versuch, ein Modul zu installieren


355

Ich kann kein Knotenmodul von der npm installieren.

npm install socket.io

Der obige Befehl führte zu einer untergeordneten Ausgabe. Socket.io kann nicht installiert werden

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

Meine NPM-Version ist:

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

Meine NodeJS-Version ist:

[applmgr@dev node_modules]$ node --version
v0.6.10

12
Das ist eine ziemlich alte npmVersion. Aktualisieren Sie es auf den neuesten Stand und versuchen Sie es erneut:sudo npm update npm -g
JohnnyHK

1
Johny, danke für deinen Kommentar. Wenn ich npm aktualisieren muss, sollte ich auch nodejs aktualisieren
Dexter

1
Sie müssen nodejs nicht ebenfalls aktualisieren, aber ich würde es empfehlen, wenn Sie aus irgendeinem Grund nicht an die 6.x-Version gebunden sind.
JohnnyHK

HTTP funktioniert; HTTPS nicht, da registry.npmjs.org nicht auf HTTPS wartet.
Mark

1
Normalerweise lade ich die neueste Version von nodejs von der offiziellen Website herunter und kompiliere sie . Von mir verwendete Distributionen (normalerweise Ubuntu LTS) haben eine zu alte Version.
Alex Lokk

Antworten:


805

Ich hatte dieses Problem mit npm v1.1.4(und node v0.6.12), den Ubuntu 12.04Repository-Versionen.

Es sieht so aus, als ob diese Version von npmnicht mehr unterstützt wird. Durch Aktualisieren des Knotens (und npm damit) wurde das Problem behoben.

Deinstallieren Sie zunächst die veraltete Version (optional, aber ich denke, dies hat ein Problem behoben, bei dem globale Module nicht mit einem Pfad versehen wurden).

sudo apt-get purge nodejs npm

Aktivieren Sie dann das Repo von nodeource und installieren Sie:

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

Hinweis - Der vorherige Rat war, Chris Leas Repo zu verwenden. Er hat es jetzt auf Nodesource migriert, siehe:

Von: hier


13
Beachten Sie, dass das Paket nodejs npm und nodejs-dev enthält. Wenn Sie also nodejs von der ppa installieren, erhalten Sie alles, was Sie für npm benötigen.
Chawkinsuf

2
Vielen Dank! Das hat bei mir funktioniert! Dies wäre die akzeptierte Antwort für "Ask Ubuntu", aber es scheint, dass viele Nicht-Ubuntu-Benutzer die akzeptierte Antwort als hilfreich empfinden.
Dannyman

2
lief dies auf raspbery pi und bekam Fehler Segmentation wenn NodeJS oder npm läuft
Godzilla

5
Nachdem ich diese Anweisungen verwendet und einen Segmentierungsfehler für Himbeer-Pi (Raspbian) erhalten hatte, entfernte ich den Port und befolgte diese Anweisungen. Gist.github.com/justinjenkins/16adc15338bb265f6808 jetzt funktioniert es!
Justin Jenkins

2
-1 für die Empfehlung, dass ahnungslose Neulinge etwas so Unkluges und Unsicheres tun wie das Weiterleiten von Code von einer nicht verifizierten Quelle im Internet an eine Root-Shell . Unverantwortlich deckt es kaum ab. Sie sollten zumindest einen Sicherheitsvorbehalt haben, wenn nicht eine Empfehlung zur Überprüfung einer Prüfsumme.
Sorpigal

644

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

Ich musste den folgenden Befehl ausführen:

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

Dadurch werden jedoch npmPakete über eine unsichere HTTP-Verbindung installiert. Wenn du kannst, solltest du dabei bleiben

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

stattdessen über HTTPS zu installieren.


6
Ja, das hat es auch für mich getan. Danke für das Teilen!
Alix Axel

7
Verwenden Sie einen Himbeer-Pi, und dies ist der gleiche Befehl, den ich verwenden musste. registry.npmjs.org/pi-gpio wurde in registry.npmjs.org/pi-gpio geändert . Ich bin mir nicht sicher, was mit dem https los ist, auf das der pi
Jdahern

28
Warnung: Dadurch werden die Ressourcen über eine / unsichere / Verbindung abgerufen. Ihre Dateien können geändert werden, bevor Sie sie erhalten. Nochmals: Dies ist nicht sicher.
Lodewijk

38
Verwenden Sie diese unsichere Lösung nicht, auch wenn sie funktioniert. Die apt-get-Version von Node.js ist zu alt (0.6.12); Ich habe die neueste stabile Version von GitHub installiert und das Problem behoben.
Louis Ameline

2
Bei einigen anderen NodeJS-Paketen funktioniert dies nicht. Ich lade gerade eine neuere Version von node.js von der offiziellen Website herunter und kompiliere sie von Hand.
Alex Lokk

32

Ich bin auf Ubuntu. Ich habe apt-get verwendet, um den Knoten zu installieren. Npm war nicht in diesem Paket enthalten, daher musste es separat installiert werden. Ich nahm an, dass das funktionieren würde, aber anscheinend war die npm-Version in der Ubuntu-Distribution veraltet.

Das Knoten- Wiki hat diese Anweisung:

Um eine aktuelle Version von Node zu erhalten oder auf älteren Ubuntu und anderen apt-basierten Distributionen zu installieren, sind möglicherweise einige zusätzliche Schritte erforderlich. Beispielinstallation:

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

Danach war npm bereits enthalten und funktionierte perfekt.


18

Für mich ist es normalerweise ein Proxy-Problem, und ich versuche alles:

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

npm config set proxy http://myusername:mypassword@proxy.us.somecompany:8080
npm config set https-proxy http://myusername:mypassword@proxy.us.somecompany:8080
set HTTPS_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080
set HTTP_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080
export HTTPS_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080
export HTTP_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080
export http_proxy=http://myusername:mypassword@proxy.us.somecompany:8080

npm --proxy http://myusername:mypassword@proxy.us.somecompany:8080 \
--without-ssl --insecure -g install

4
Deaktivieren von Strict SSL mithilfe von npm config set strict-ssl falsewroked for me.
Mayura

17

Sie müssen auch Software-Eigenschaften-Common installieren, damit das Add-Apt-Repository funktioniert. so wird es sein

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

3
Nach den obigen Schritten müssen wir alle
Folgendes

10

Eine Sache, die bei mir mit zufälligen npm-Installationsfehlern funktioniert hat (wobei das fehlerhafte Paket zu unterschiedlichen Zeiten (aber in derselben Umgebung) unterschiedlich ist, ist die Verwendung dieser:

npm cache clean

Und dann wiederholen Sie den Vorgang. Dann scheint der Prozess reibungsloser zu verlaufen und das eigentliche Problem und die Fehlermeldung werden angezeigt, wo Sie es beheben und dann fortfahren können.

Dies basiert auf der Erfahrung mit der npm-Installation einer ganzen Reihe von Paketen unter einer ziemlich nackten Ubuntu-Installation in einer Docker-Instanz. Manchmal fehlen Build / Make-Tools in Ubuntu, und die npm-Fehler zeigen das eigentliche Problem erst an, wenn Sie den Cache aus irgendeinem Grund bereinigen.


Ja, ich stellte fest, dass ich dies in Verbindung mit der Antwort von dort ausführen musste.
John Powell

7

Dieses Problem ist auf das https-Protokoll zurückzuführen, weshalb die andere Lösung funktioniert (durch Umschalten auf das nicht sichere Protokoll).

Für mich war die beste Lösung, die neueste Version des Knotens zu kompilieren, die npm enthält

apt-get purge nodejs npm
git clone https://github.com/nodejs/node ~/local/node
cd ~/local/node
./configure
make
make install

6

Es gibt jetzt offizielle Anweisungen von joyent (Unterstützer des primären Knotens). Für Ubuntu:

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

Weitere Unix-Distributionen, OSX und Windows finden Sie unter dem Link. Beachten Sie, dass dadurch sowohl Node als auch npm installiert werden.


5

Das einzige, was für mich unter Elementary OS Luna, einer Ubuntu-Gabel, funktioniert hat. Ich bin auf x86-Architektur. Ich habe alle Antworten hier ausprobiert, mich aber schließlich entschlossen, sie von der Quelle zu installieren.

Stellen Sie zunächst sicher, dass es nicht mit dem Paketmanager installiert wurde:

sudo apt-get purge nodejs npm -y

Ich ging zur Download-Seite, um nach der neuesten Quelle zu suchen und sie herunterzuladen, http://nodejs.org/download/ . Sie können Curl, Wget oder Ihren Browser verwenden, um es zu erhalten:

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

Das Make kann eine Weile dauern. Wenn Sie fertig sind, sollten Sie node und npm installiert haben und in Ihrem Verzeichnis / usr / local / bin arbeiten, das sich bereits auf Ihrem Pfad befinden sollte. Sie sollten überprüfen, wo es lebt:

which npm node

Ich musste auch die Berechtigungen ändern, damit es funktioniert:

sudo chown -R $USER /usr/local

Wenn es nicht funktioniert hat, überprüfen Sie Ihren Pfad:

echo $PATH

Beachten Sie, dass die Installation auf diese Weise nicht vom apt-get-Paketmanager verwaltet wird. Prost!


Bitte teilen Sie das Problem mit, anstatt es zu markieren. Für mich geht das! :)
Radtek

2

Die folgende Methode hat bei mir funktioniert, ein großes Lob an den Github-Benutzer: Mitternachtscodr

Stellen Sie sicher, dass Sie alle bereits installierten nodejs / npm-Pakete entfernen.

sudo apt-get purge nodejs

sudo apt-get purge npm

Installieren Sie nun Node js mit dem folgenden Befehl (Dank Mitternachtscodr auf Github).

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

Beachten Sie, dass Sie Knoten mit Befehlsknoten und nicht Knotenjs aufrufen können.

Sobald der Knoten installiert ist, installieren Sie npm

sudo apt-get install npm

2

Vor kurzem hatte ich dieses Problem, nachdem ich node.js (und unweigerlich npm) auf die neueste Version aktualisiert hatte:

> npm --version < 2.0.0-alpha-5

Hinweis: Ich habe nicht nach einer instabilen Version gefragt , sondern erst danachbrew install npm OSX.

Das Downgrade von npm hat das Problem für mich behoben.

Der einfachste Weg, das stabile npm zu installieren, ist npm install -g npm, dass es unter bestimmten Umständen möglicherweise nicht funktioniert und dann möglicherweise ein Downgrade von node.js erforderlich ist.


1

Möglicherweise war die npm-Registrierung zu diesem Zeitpunkt nicht verfügbar oder Ihre Verbindung wurde unterbrochen.

In beiden Fällen sollten Sie Node und Npm aktualisieren.

Ich würde empfehlen, nave zu verwenden, um Ihre Knotenumgebungen zu verwalten.

https://npmjs.org/package/nave

Sie können damit problemlos Versionen installieren und schnell zwischen ihnen wechseln.


1

Für Himbeer-Pi habe ich eine Lösung gefunden und modifiziert , die ich
hier gefunden habe

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

Der einzige Mod, den ich gemacht habe, war, alle 10.25 auf 10.28 zu ändern, was zu dieser Zeit der neueste Linux-Arm-Pi war


0

@ Daher ist die Antwort die beste. Die Node-Versionen haben sich jedoch immer weiter nach oben und oben bewegt, und die Versionierung wurde durch das Remerge von io.js erschwert. Wenn Sie den Schritten in seiner Antwort folgen, erhalten Sie die Knotenversion 0.10.25- nicht die neueste Version.

Sie sollten weiterhin alle vorhandenen Node / Npm-Pakete mit löschen

sudo apt-get purge nodejs npm

Schauen Sie sich dann die Seite zur Installation von Nodesource Deb unter https://github.com/nodesource/distributions#debinstall an .

Alle Node.js-Versionen werden auf der obigen Seite mit den Linux-Befehlen aufgelistet , um sie zu installieren. Und diese Pakete funktionieren sowohl unter Debian als auch unter Ubuntu .

PS Wenn Sie Node v4.4 oder höher unter Ubuntu Precise oder Debian Wheezy ausführen möchten, sollten Sie die Informationen zum Ausführen unter älteren Distributionen lesen .

PPS Wenn Ihr apt-get fehlschlägt , wird das Skript nicht abgeschlossen (Google-Referenzen haben meine fehlgeschlagen apt-get update). Sie sollten Nachrichten über den NodeSource-Signaturschlüssel sehen, der Ihrem Schlüsselbund hinzugefügt wird, und eine letzte Nachricht, die Sie dazu auffordert Run 'apt-get install nodejs' to install Node.js.

PPPS npm wird mit Knoten installiert. Nach der Installation können Sie mit auf das neueste npm aktualisierensudo npm install npm -g

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.