"No se pudo recuperar el mensaje del registro" al intentar instalar cualquier módulo

355

No puedo instalar ningún módulo de nodo desde el npm.

npm install socket.io

El comando anterior resultó en la salida siguiente, no puede instalar 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

Mi versión NPM es:

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

Mi versión de NodeJS es:

[applmgr@dev node_modules]$ node --version
v0.6.10
Diestro
fuente
12
Esa es una npmversión bastante antigua . sudo npm update npm -g
Actualícelo
1
johny gracias por tu comentario, en realidad si necesito actualizar npm también debería actualizar nodejs
Dexter
1
No tiene que actualizar nodejs también, pero lo recomendaría si no está vinculado a la versión 6.x por alguna razón.
JohnnyHK
HTTP funciona; HTTPS no lo hace, porque Registry.npmjs.org no escucha HTTPS.
Marcar
1
Normalmente descargo y compilo la última versión de nodejs del sitio oficial . Las distribuciones que uso (generalmente Ubuntu LTS) tienen una versión demasiado antigua.
Alex Lokk

Respuestas:

805

Tuve este problema con npm v1.1.4(y node v0.6.12), que son las Ubuntu 12.04versiones del repositorio.

Parece que esa versión de npmya no es compatible, el nodo de actualización (y npm con él) resolvió el problema.

Primero, desinstale la versión desactualizada (opcional, pero creo que esto solucionó un problema que estaba teniendo con módulos globales que no están siendo reparados).

sudo apt-get purge nodejs npm

Luego habilite el repositorio de nodeource e instale:

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

Nota: el consejo anterior era usar el repositorio de Chris Lea, ahora lo ha migrado a nodesource, vea:

De: aquí

John Carter
fuente
13
Tenga en cuenta que el paquete nodejs incluye npm y nodejs-dev, por lo que instalar nodejs desde el ppa le brinda todo lo necesario para npm.
chawkinsuf
2
¡Gracias! ¡Esto funcionó para mí! Esta sería la respuesta aceptada para "Preguntar a Ubuntu", pero parece que muchos usuarios que no son de Ubuntu consideran útil la respuesta aceptada.
dannyman
2
ejecuté esto en raspbery pi y obtuve un fallo de segmentación al ejecutar nodejs o npm
godzilla
55
Después de usar estas instrucciones y obtener un error de segmentación en raspberry pi (Raspbian), eliminé el puerto y seguí estas instrucciones gist.github.com/justinjenkins/16adc15338bb265f6808 ¡ ahora funciona!
Justin Jenkins
2
-1 por recomendar que los recién llegados desprevenidos hagan algo tan imprudente e inseguro como el código de tubería de una fuente no verificada en Internet a un shell raíz . Irresponsable apenas lo cubre. Al menos debe tener una advertencia sobre la seguridad, si no una recomendación para verificar una suma de verificación.
sorigal
644

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

Tuve que ejecutar el siguiente comando:

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

Sin embargo, eso hará que los npmpaquetes de instalación sobre una conexión HTTP insegura. Si puedes, debes seguir con

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

en lugar de instalar sobre HTTPS.

Diestro
fuente
66
Sí, esto también lo hizo por mí. ¡Gracias por compartir!
Alix Axel
77
Usando una frambuesa pi, y este es el mismo comando que tuve que usar. Se cambió el registro.npmjs.org/pi-gpio a registro.npmjs.org/pi-gpio . No estoy seguro de qué pasa con el https no accesible por el pi
Jdahern
28
Advertencia: esto extrae los recursos en una conexión / insegura /. Sus archivos pueden cambiarse antes de que los obtenga. De nuevo: esto no es seguro.
Lodewijk
38
No use esta solución insegura, incluso si funciona. La versión apt-get de Node.js es demasiado antigua (0.6.12); Instalé la última versión estable de GitHub y resolvió el problema.
Louis Ameline
2
No funcionará para otros paquetes de nodejs. Solo estoy descargando una versión más nueva de node.js del sitio oficial y compilando a mano.
Alex Lokk
32

Estoy en Ubuntu Solía ​​apt-get para instalar el nodo. Npm no se incluyó en ese paquete, por lo que tuvo que instalarse por separado. Supuse que funcionaría, pero aparentemente la versión npm en la distribución de Ubuntu estaba desactualizada.

El nodo wiki tiene estas instrucciones:

La obtención de una versión reciente de Node o la instalación en Ubuntu más antiguo y otras distribuciones basadas en apt pueden requerir algunos pasos adicionales. Instalación de ejemplo:

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

Después de eso, npm ya estaba incluido y funcionaba perfectamente.

geon
fuente
18

Para mí, generalmente es un problema de proxy, y lo intento todo:

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
fuente
44
Deshabilitar SSL estricto usando npm config set strict-ssl falsewroked para mí.
Mayura
17

También necesita instalar software-properties-common para que add-apt-repository funcione. Así será

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
fuente
3
Después de los pasos anteriores, todo lo que debemos hacer es: sudo npm install -g karma
vijay
10

Una cosa que me ha funcionado con errores de instalación aleatorios de npm (donde el paquete que produce errores es diferente en diferentes momentos (pero en el mismo entorno) es usar esto:

npm cache clean

Y luego repite el proceso. Luego, el proceso parece ir más suave y surgirá el verdadero problema y el mensaje de error, donde puede solucionarlo y luego continuar.

Esto se basa en la experiencia de ejecutar la instalación npm de una gran cantidad de paquetes bajo una instalación bastante simple de Ubuntu dentro de una instancia de Docker. A veces faltan herramientas de compilación / creación en Ubuntu y los errores de npm no mostrarán el problema real hasta que limpie el caché por alguna razón.

Edward Tan
fuente
Sí, descubrí que tenía que ejecutar esto, junto con la respuesta de allí.
John Powell
7

Este problema se debe al protocolo https, por lo que la otra solución funciona (al cambiar al protocolo no seguro).

Para mí, la mejor solución fue compilar la última versión del nodo, que incluye npm

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

Ahora hay instrucciones oficiales de joyent (respaldo principal de nodejs). Para Ubuntu:

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

Para otras distribuciones de Unix, OSX y Windows ver el enlace. Tenga en cuenta que esto instalará tanto el nodo como npm.

Brian Low
fuente
5

Lo único que funcionó para mí en Elementary OS Luna, un Ubuntu Fork. Estoy en arquitectura x86. Intenté todas las respuestas aquí, pero finalmente decidí instalarlo desde la fuente.

Primero, asegúrese de que no esté instalado usando el administrador de paquetes:

sudo apt-get purge nodejs npm -y

Fui a la página de descarga para buscar la última fuente y descargarla, http://nodejs.org/download/ . Puede usar curl, wget o su navegador para obtenerlo:

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 marca puede llevar un tiempo. Cuando termine, debe tener el nodo y npm instalados y trabajando en su directorio / usr / local / bin que ya debería estar en su ruta. Debes verificar dónde vive:

which npm node

También tuve que cambiar los permisos para que funcione:

sudo chown -R $USER /usr/local

Si no funcionó, verifique su ruta:

echo $PATH

Tenga en cuenta que al instalarlo de esta manera, no será administrado por apt-get package manager. ¡Salud!

radtek
fuente
Comparta cuál es el problema en lugar de marcarlo. ¡Esto funciona para mi! :)
radtek
2

El siguiente método funcionó para mí, Felicitaciones al usuario de github: midnightcodr

Asegúrese de eliminar los paquetes nodejs / npm ya instalados.

sudo apt-get purge nodejs

sudo apt-get purge npm

Ahora instale Node js usando el comando a continuación (Gracias a midnightcodr en github)

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

Tenga en cuenta que puede invocar nodo con nodo de comando y no nodejs.

Una vez que el nodo está instalado, instale npm

sudo apt-get install npm
Eswar Rajesh Pinapala
fuente
2

Recientemente tuve este problema después de actualizar node.js (e inevitablemente npm) a la versión más nueva:

> npm --version < 2.0.0-alpha-5

Nota: no pedí una versión inestable, la obtuve después brew install npmen OSX.

La degradación de npm solucionó el problema para mí.

La forma más fácil de instalar el npm estable es npm install -g npmque, en algunas circunstancias, podría no funcionar y, en ese caso, podría ser necesaria la degradación de node.js.

Michał Miszczyszyn
fuente
1

Podría ser que el registro npm estaba inactivo en ese momento o su conexión se cayó.

De cualquier manera, debe actualizar node y npm.

Recomendaría usar nave para administrar sus entornos de nodo.

https://npmjs.org/package/nave

Le permite instalar fácilmente versiones y saltar rápidamente entre ellas.

serby
fuente
1

para Raspberry Pi encontré y modifiqué una solución que encontré
aquí es lo que ejecuté

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

el único mod que hice fue cambiar todo 10.25 a 10.28, que era el último linux-arm-pi en ese momento

Godzilla
fuente
0

@ allí la respuesta es la mejor. Sin embargo, las versiones de Node se han movido hacia adelante y hacia arriba, y el versionado se complicó por el resurgimiento de io.js. Siguiendo los pasos de su respuesta, terminará con la versión Node 0.10.25, no la versión más reciente.

Aún debe purgar cualquier paquete de nodo / npm existente con

sudo apt-get purge nodejs npm

y luego ve y mira la página de instalación de Deb de SourceSource en https://github.com/nodesource/distributions#debinstall .

Todas las versiones de Node.js se enumeran en la página anterior con los comandos de Linux para instalarlas. Y estos paquetes funcionarán tanto en Debian como en Ubuntu .

PD: si desea ejecutar Node v4.4 o superior en Ubuntu Precise o Debian Wheezy, debe revisar la información sobre la ejecución en distribuciones anteriores .

PPS Si su apt-get falla , el script no se completará (las referencias de Google estaban fallando apt-get update). Debería ver mensajes sobre la clave de firma de NodeSource que se agrega a su llavero y un mensaje final que le indica que lo haga Run 'apt-get install nodejs' to install Node.js.

PPPS npm se instala con el nodo. Una vez instalado, puede actualizar a la última npm consudo npm install npm -g

timbo
fuente