«Le message n'a pas pu être récupéré du registre» lors de l'installation d'un module

355

Je ne peux installer aucun module de nœud à partir du npm.

npm install socket.io

La commande ci-dessus a abouti à une sortie inférieure, elle n'est pas en mesure d'installer 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

Ma version NPM est:

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

Ma version NodeJS est:

[applmgr@dev node_modules]$ node --version
v0.6.10
Dexter
la source
12
C'est une npmversion assez ancienne . Mettez-le à jour au plus tard et réessayez:sudo npm update npm -g
JohnnyHK
1
johny merci pour votre commentaire, en fait, si j'ai besoin de mettre à jour npm, dois-je également mettre à jour nodejs
Dexter
1
Vous n'avez pas besoin de mettre à jour nodejs également, mais je le recommanderais si vous n'êtes pas lié à la version 6.x pour une raison quelconque.
JohnnyHK
HTTP fonctionne; HTTPS ne le fait pas, car Registry.npmjs.org n'écoute pas HTTPS.
Mark
1
Je télécharge et compile généralement la dernière version de nodejs sur le site officiel . Les distributions que j'utilise (généralement Ubuntu LTS) ont une version trop ancienne.
Alex Lokk

Réponses:

805

J'ai eu ce problème avec npm v1.1.4(et node v0.6.12), qui sont les Ubuntu 12.04versions du référentiel.

Il semble que cette version de npmne soit plus prise en charge, la mise à jour du nœud (et de npm avec lui) a résolu le problème.

Tout d'abord, désinstallez la version obsolète (facultative, mais je pense que cela a résolu un problème que je rencontrais avec les modules globaux qui n'étaient pas acheminés).

sudo apt-get purge nodejs npm

Activez ensuite le référentiel de nodeource et installez:

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

Remarque - le conseil précédent était d'utiliser le référentiel de Chris Lea, il a maintenant migré cela vers nodeource, voir:

De: ici

John Carter
la source
13
Notez que le package nodejs inclut npm et nodejs-dev, donc l'installation de nodejs à partir du ppa vous fournit tout ce dont vous avez besoin pour npm.
chawkinsuf
2
Merci! Cela a fonctionné pour moi! Ce serait la réponse acceptée pour "Ask Ubuntu" mais il semble que de nombreux utilisateurs non Ubuntu trouvent la réponse acceptée utile.
dannyman
2
a exécuté ceci sur raspbery pi et a obtenu une erreur de segmentation lors de l'exécution de nodejs ou npm
godzilla
5
Après avoir utilisé ces instructions et obtenu une erreur de segmentation sur le raspberry pi (Raspbian), j'ai supprimé le port et suivi ces instructions gist.github.com/justinjenkins/16adc15338bb265f6808 maintenant cela fonctionne!
Justin Jenkins
2
-1 pour avoir recommandé que les nouveaux arrivants sans méfiance fassent quelque chose d'aussi imprudent et dangereux que le code de canalisation d'une source non vérifiée sur Internet vers un shell racine . L'irresponsable le couvre à peine. Vous devriez au moins avoir une mise en garde sur la sécurité sinon une recommandation pour vérifier une somme de contrôle.
sorpigal
644

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

J'ai dû exécuter la commande ci-dessous:

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

Cependant, cela fera npminstaller des packages sur une connexion HTTP non sécurisée. Si vous le pouvez, vous devriez vous en tenir à

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

au lieu d'installer sur HTTPS.

Dexter
la source
6
Ouaip, ça l'a aussi fait pour moi. Merci d'avoir partagé!
Alix Axel
7
Utiliser un Raspberry Pi, et c'est la même commande que j'ai dû utiliser. changé registry.npmjs.org/pi-gpio en Registry.npmjs.org/pi-gpio . Pas sûr de ce qui se passe avec le https non accessible par le pi
Jdahern
28
Avertissement: cela tire les ressources via une connexion / non sécurisée /. Vos fichiers peuvent être modifiés avant de les obtenir. Encore une fois: ce n'est pas sûr.
Lodewijk
38
N'utilisez pas cette solution non sécurisée, même si cela fonctionne. La version apt-get de Node.js est trop ancienne (0.6.12); J'ai installé la dernière version stable de GitHub et cela a résolu le problème.
Louis Ameline
2
Cela ne fonctionnera pas pour certains autres packages nodejs. Je télécharge simplement une version plus récente de node.js depuis le site officiel et je la compile à la main.
Alex Lokk
32

Je suis sur Ubuntu. J'ai utilisé apt-get pour installer le nœud. Npm n'était pas inclus dans ce package, il a donc dû être installé séparément. J'ai supposé que cela fonctionnerait, mais apparemment, la version npm dans la distribution Ubuntu était obsolète.

Le wiki du nœud a cette instruction:

L'obtention d'une version récente de Node ou l'installation sur une version plus ancienne d'Ubuntu et d'autres distributions basées sur apt peut nécessiter quelques étapes supplémentaires. Exemple d'installation:

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

Après cela, npm était déjà inclus et fonctionnait parfaitement.

geon
la source
18

Pour moi, c'est généralement un problème de proxy, et j'essaie de tout:

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
la source
4
Désactiver Strict SSL en utilisant npm config set strict-ssl falsewroked pour moi.
Mayura
17

Vous devez également installer software-properties-common pour que add-apt-repository fonctionne. alors il sera

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
Tushar
la source
3
Après les étapes ci-dessus, nous devons tous faire: sudo npm install -g karma
vijay
10

Une chose qui a fonctionné pour moi avec des erreurs d'installation npm aléatoires (où le package qui génère des erreurs est différent à différents moments (mais dans le même environnement) est d'utiliser ceci:

npm cache clean

Et puis répétez le processus. Ensuite, le processus semble aller plus en douceur et le vrai problème et le message d'erreur émergeront, où vous pourrez le corriger puis continuer.

Ceci est basé sur l'expérience de l'exécution de l'installation de npm de tout un tas de packages sous une installation Ubuntu assez nue dans une instance Docker. Parfois, il y a des outils de construction / création manquants dans Ubuntu et les erreurs npm ne montreront pas le vrai problème jusqu'à ce que vous nettoyiez le cache pour une raison quelconque.

Edward Tan
la source
Oui, j'ai trouvé que je devais exécuter cela, en conjonction avec la réponse de là.
John Powell
7

Ce problème est dû au protocole https, c'est pourquoi l'autre solution fonctionne (en passant au protocole non sécurisé).

Pour moi, la meilleure solution était de compiler la dernière version de node, qui inclut npm

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

Il y a maintenant des instructions officielles de joyent (principal contributeur de nodejs). Pour Ubuntu:

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

Pour les autres distributions Unix, osx et windows, voir le lien. Notez que cela installera le nœud et npm.

Brian Low
la source
5

La seule chose qui a fonctionné pour moi sur Elementary OS Luna, un Ubuntu Fork. Je suis sur l'architecture x86. J'ai essayé toutes les réponses ici mais j'ai finalement décidé de l'installer à partir des sources.

Tout d'abord, assurez-vous qu'il n'est pas installé à l'aide du gestionnaire de packages:

sudo apt-get purge nodejs npm -y

Je suis allé sur la page de téléchargement pour rechercher la dernière source et la télécharger, http://nodejs.org/download/ . Vous pouvez utiliser curl, wget ou votre navigateur pour l'obtenir:

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

La fabrication pourrait prendre un certain temps. Une fois terminé, vous devriez avoir installé node et npm et travailler dans votre répertoire / usr / local / bin qui devrait déjà être sur votre chemin. Vous devriez vérifier où il vit:

which npm node

J'ai également dû modifier les autorisations pour le faire fonctionner:

sudo chown -R $USER /usr/local

Si cela n'a pas fonctionné, vérifiez votre chemin:

echo $PATH

Notez qu'en l'installant de cette façon, il ne sera pas géré par le gestionnaire de paquets apt-get. À votre santé!

radtek
la source
Veuillez partager le problème au lieu de le noter. Ça marche pour moi! :)
radtek
2

La méthode ci-dessous a fonctionné pour moi, bravo à l'utilisateur github: midnightcodr

Assurez-vous de supprimer tous les packages nodejs / npm déjà installés.

sudo apt-get purge nodejs

sudo apt-get purge npm

Installez maintenant Node js en utilisant la commande ci-dessous (Merci à midnightcodr sur github)

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

Notez que vous pouvez appeler le nœud avec la commande node et non nodejs.

Une fois le nœud installé, installez npm

sudo apt-get install npm
Eswar Rajesh Pinapala
la source
2

Récemment, j'ai eu ce problème après la mise à niveau de node.js (et inévitablement npm) vers la dernière version:

> npm --version < 2.0.0-alpha-5

Remarque: je n'ai pas demandé une version instable, je l'ai juste aprèsbrew install npm sur OSX.

La rétrogradation de npm a résolu le problème pour moi.

La façon la plus simple d'installer le npm stable est, npm install -g npmmais cela pourrait ne pas fonctionner dans certaines circonstances et une rétrogradation de node.js pourrait alors être nécessaire.

Michał Miszczyszyn
la source
1

Il se peut que le registre npm soit en panne à ce moment-là ou que votre connexion ait été interrompue.

Dans tous les cas, vous devez mettre à niveau le nœud et npm.

Je recommanderais d'utiliser Nave pour gérer vos environnements de nœuds.

https://npmjs.org/package/nave

Il vous permet d'installer facilement des versions et de passer rapidement d'une version à l'autre.

serby
la source
1

pour framboise pi j'ai trouvé et modifié une solution que j'ai trouvée
ici, c'est ce que j'ai couru

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

le seul mod que j'ai fait était de changer tous les 10,25 en 10,28 qui était le dernier linux-arm-pi à l'époque

godzilla
la source
0

La réponse de @ therefromhere est la meilleure. Cependant, les versions de Node ont évolué de façon continue et ascendante, et la gestion des versions a été compliquée par la réémergence de io.js. En suivant les étapes de sa réponse, vous vous retrouverez avec la version Node 0.10.25- pas la version la plus récente.

Vous devez toujours purger tous les packages de nœuds / npm existants avec

sudo apt-get purge nodejs npm

puis allez voir la page d'installation de Deb de node source à https://github.com/nodesource/distributions#debinstall .

Toutes les versions de Node.js sont répertoriées sur la page ci-dessus avec les commandes Linux pour les installer. Et ces packages fonctionneront à la fois sur Debian et Ubuntu .

PS Si vous souhaitez exécuter Node v4.4 ou supérieur sur Ubuntu Precise ou Debian Wheezy, vous devriez consulter les informations sur l'exécution sur des distributions plus anciennes .

PPS Si votre apt-get échoue , le script ne se terminera pas (les références Google échouaient mon apt-get update). Vous devriez voir des messages sur la clé de signature NodeSource ajoutée à votre trousseau de clés et un message final vous y invitant Run 'apt-get install nodejs' to install Node.js.

PPPS npm est installé avec le nœud. Une fois installé, vous pouvez mettre à jour vers le dernier npm avecsudo npm install npm -g

timbo
la source