"Messaggio non riuscito a recuperare dal registro" durante il tentativo di installare qualsiasi modulo


355

Non riesco a installare alcun modulo nodo da npm.

npm install socket.io

Il comando precedente ha portato all'output inferiore, non è in grado di installare 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

La mia versione di NPM è:

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

La mia versione di NodeJS è:

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

12
Questa è una npmversione piuttosto vecchia . Aggiornalo all'ultimo e riprova:sudo npm update npm -g
JohnnyHK

1
johny grazie per il tuo commento, in realtà se devo aggiornare npm dovrei anche aggiornare nodejs
Dexter

1
Non è necessario aggiornare anche nodejs, ma lo consiglierei se non sei legato alla versione 6.x per qualche motivo.
JohnnyHK,

HTTP funziona; HTTPS no, perché register.npmjs.org non sta ascoltando HTTPS.
Segna il

1
Di solito scarico e compilo l'ultima versione di nodejs dal sito ufficiale . Le distribuzioni che uso (di solito Ubuntu LTS) hanno una versione troppo vecchia.
Alex Lokk,

Risposte:


805

Ho avuto questo problema con npm v1.1.4(e node v0.6.12), che sono le Ubuntu 12.04versioni del repository.

Sembra che quella versione di npmnon sia più supportata, l'aggiornamento del nodo (e npm con esso) ha risolto il problema.

Innanzitutto, disinstalla la versione obsoleta (facoltativo, ma penso che questo abbia risolto un problema che avevo riscontrato con i moduli globali non inseriti).

sudo apt-get purge nodejs npm

Quindi abilitare il repository di nodesource e installarlo:

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

Nota: il consiglio precedente era di usare il repository di Chris Lea, ora è migrato su nodesource, vedi:

Da: qui


13
Nota che il pacchetto nodejs include npm e nodejs-dev, quindi l'installazione di nodejs da ppa ti offre tutto il necessario per npm.
Chawkinsuf,

2
Grazie! Questo ha funzionato per me! Questa sarebbe la risposta accettata per "Chiedi Ubuntu", ma sembra che molti utenti non Ubuntu trovino utile la risposta accettata.
dannyman,

2
eseguito questo su raspbery pi e ottenuto errore di segmentazione durante l'esecuzione di nodejs o npm
godzilla

5
Dopo aver usato queste istruzioni e aver ricevuto un errore di segmentazione su raspberry pi (Raspbian) ho rimosso la porta e ho seguito queste istruzioni gist.github.com/justinjenkins/16adc15338bb265f6808 ora funziona!
Justin Jenkins,

2
-1 per aver raccomandato ai nuovi arrivati ​​ignari di fare qualcosa di poco saggio e insicuro come eseguire il piping del codice da una fonte non verificata su Internet a una shell root . Irresponsabile lo copre a malapena. Dovresti almeno avere un avvertimento sulla sicurezza se non una raccomandazione per verificare un checksum.
sorpigal

644

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

Ho dovuto eseguire il comando seguente:

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

Tuttavia, ciò renderà i npmpacchetti di installazione su una connessione HTTP non sicura. Se puoi, dovresti restare con

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

invece per installare su HTTPS.


6
Sì, lo ha fatto anche per me. Grazie per la condivisione!
Alix Axel,

7
Usando un raspberry pi, e questo è lo stesso comando che ho dovuto usare. modificato register.npmjs.org/pi-gpio in register.npmjs.org/pi-gpio . Non so che succede con l'https non accessibile dal pi
Jdahern il

28
Avvertenza: questo attira le risorse su una connessione / insecure /. I tuoi file possono essere modificati prima di averli. Ancora: questo non è sicuro.
Lodewijk,

38
Non utilizzare questa soluzione non sicura, anche se funziona. La versione apt-get di Node.js è troppo vecchia (0.6.12); Ho installato l'ultima versione stabile da GitHub e ho risolto il problema.
Louis Ameline,

2
Non funzionerà con alcuni altri pacchetti nodejs. Sto solo scaricando la versione più recente di node.js dal sito ufficiale e la sto compilando a mano.
Alex Lokk,

32

Sono su Ubuntu. Ho usato apt-get per installare il nodo. Npm non era incluso in quel pacchetto, quindi doveva essere installato separatamente. Ho pensato che avrebbe funzionato, ma a quanto pare la versione npm nella distribuzione Ubuntu era obsoleta.

Il nodo wiki ha queste istruzioni:

Ottenere una versione recente di Node o installare su Ubuntu precedente e altre distribuzioni basate su apt potrebbe richiedere alcuni passaggi aggiuntivi. Esempio di installazione:

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

Successivamente, npm era già incluso e funzionava perfettamente.


18

Per me, di solito è un problema di proxy e provo tutto:

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
Disabilitare Strict SSL usando npm config set strict-ssl falsewroked per me.
Mayura,

17

È inoltre necessario installare software-properties-common per far funzionare il repository add-apt. così sarà

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
Dopo i passaggi precedenti, tutti dobbiamo fare è: sudo npm install -g karma
vijay

10

Una cosa che ha funzionato per me con errori di installazione casuali di npm (in cui il pacchetto che genera errori è diverso in tempi diversi (ma nello stesso ambiente) è usare questo:

npm cache clean

E quindi ripetere il processo. Quindi il processo sembra andare più liscio ed emergerà il vero problema e il messaggio di errore, dove è possibile risolverlo e quindi procedere.

Questo si basa sull'esperienza di esecuzione dell'installazione npm di un intero gruppo di pacchetti in un'installazione Ubuntu piuttosto nuda all'interno di un'istanza Docker. A volte mancano strumenti di build / make da Ubuntu e gli errori npm non mostreranno il vero problema fino a quando non si pulisce la cache per qualche motivo.


Sì, ho scoperto che dovevo eseguire questo, insieme alla risposta da lì.
John Powell,

7

Questo problema è dovuto al protocollo https, motivo per cui funziona l'altra soluzione (passando al protocollo non sicuro).

Per me, la soluzione migliore è stata quella di compilare l'ultima versione di nodo, che include npm

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

6

Ora ci sono istruzioni ufficiali da parte di joyent (primario nodejs backer). Per Ubuntu:

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

Per altre distribuzioni unix, osx e windows vedi il link. Nota che questo installerà sia node che npm.


5

L'unica cosa che ha funzionato per me su Elementary OS Luna, un Ubuntu Fork. Sono su architettura x86. Ho provato tutte le risposte qui ma alla fine ho deciso di installarlo dal sorgente.

Innanzitutto, assicurati che non sia installato utilizzando il gestore pacchetti:

sudo apt-get purge nodejs npm -y

Sono andato alla pagina di download per cercare l'ultima fonte e scaricarla, http://nodejs.org/download/ . Puoi usare curl, wget o il tuo browser per ottenerlo:

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

Il trucco potrebbe richiedere del tempo. Al termine, dovresti avere node e npm installati e funzionanti nella tua directory / usr / local / bin che dovrebbe essere già sul tuo percorso. Dovresti verificare dove abita:

which npm node

Ho anche dovuto modificare le autorizzazioni per farlo funzionare:

sudo chown -R $USER /usr/local

Se non ha funzionato controlla il tuo percorso:

echo $PATH

Si noti che installandolo in questo modo, non sarà gestito dal gestore pacchetti apt-get. Saluti!


Si prega di condividere qual è il problema invece di contrassegnarlo. Per me funziona! :)
Radtek,

2

Il metodo seguente ha funzionato per me, Kudos per l'utente github: midnightcodr

Assicurati di rimuovere tutti i pacchetti nodejs / npm già installati.

sudo apt-get purge nodejs

sudo apt-get purge npm

Ora installa Node js usando il comando seguente (Grazie a midnightcodr su github)

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

Si noti che è possibile richiamare il nodo con il nodo comando e non nodejs.

Una volta installato il nodo, Installa npm

sudo apt-get install npm

2

Recentemente ho avuto questo problema dopo aver aggiornato node.js (e inevitabilmente npm) alla versione più recente:

> npm --version < 2.0.0-alpha-5

Nota: non ho chiesto una versione instabile, l'ho appena presa brew install npmsu OSX.

Il downgrade di npm ha risolto il problema per me.

Il modo più semplice per installare il npm stabile è npm install -g npmma potrebbe non funzionare in alcune circostanze e potrebbe essere necessario il downgrade di node.js.


1

È possibile che al momento il registro di npm non fosse attivo o che la connessione fosse interrotta.

In entrambi i casi è necessario aggiornare node e npm.

Consiglierei di usare nave per gestire gli ambienti del nodo.

https://npmjs.org/package/nave

Ti consente di installare facilmente le versioni e di saltare rapidamente tra di loro.


1

per Raspberry Pi ho trovato e modificato una soluzione che ho trovato
qui è quello che ho eseguito

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

l'unica mod che ho fatto è stata cambiare tutte le 10.25 in 10.28 che era l'ultima linux-arm-pi al momento


0

@ La risposta di là è la migliore. Tuttavia, le versioni di Node si sono spostate sempre più avanti e verso l'alto e il controllo delle versioni è stato complicato dal rimescolamento di io.js. Seguendo i passaggi indicati nella sua risposta, ti ritroverai con la versione del nodo, 0.10.25non con la versione più recente.

È comunque necessario eliminare tutti i pacchetti nodo / npm esistenti con

sudo apt-get purge nodejs npm

e quindi vai alla pagina di installazione deb di nodesource all'indirizzo https://github.com/nodesource/distributions#debinstall .

Tutte le versioni di Node.js sono elencate nella pagina sopra con i comandi Linux per installarle. E questi pacchetti funzioneranno sia su Debian che su Ubuntu .

PS Se si desidera eseguire Node v4.4 o versioni successive su Ubuntu Precise o Debian Wheezy, è necessario rivedere le informazioni sull'esecuzione su distribuzioni precedenti .

PPS Se il tuo apt-get non riesce , lo script non verrà completato (i riferimenti di Google non riuscivano nel mio apt-get update). Dovresti vedere i messaggi sulla chiave di firma NodeSource che vengono aggiunti al tuo portachiavi e un messaggio finale che ti dice di farlo Run 'apt-get install nodejs' to install Node.js.

PPPS npm è installato con il nodo. Una volta installato, è possibile aggiornare all'ultimo npm consudo npm install npm -g

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.