“Mensagem falhou ao buscar no registro” ao tentar instalar qualquer módulo


355

Não consigo instalar nenhum módulo de nó a partir do npm.

npm install socket.io

O comando acima resultou na saída abaixo, não é possível instalar o 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

Minha versão do NPM é:

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

Minha versão do NodeJS é:

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

12
Essa é uma npmversão bastante antiga . Atualize-o para o mais recente e tente novamente:sudo npm update npm -g
JohnnyHK

11
Johny obrigado pelo seu comentário, na verdade, se eu preciso atualizar npm deve também atualizar nodejs
Dexter

11
Você não precisa atualizar o nodejs também, mas eu o recomendaria se não estiver vinculado à versão 6.x por algum motivo.
JohnnyHK

HTTP funciona; HTTPS não, porque o registry.npmjs.org não está ouvindo HTTPS.
Mark

11
Normalmente, eu baixa e compilo a versão mais recente do nodejs no site oficial . As distribuições que eu uso (geralmente o Ubuntu LTS) têm uma versão muito antiga.
precisa

Respostas:


805

Eu tive esse problema com npm v1.1.4(e node v0.6.12), que são as Ubuntu 12.04versões do repositório.

Parece que essa versão npmnão é mais suportada, a atualização do nó (e o npm com ele) resolveu o problema.

Primeiro, desinstale a versão desatualizada (opcional, mas acho que isso corrigiu um problema que eu estava tendo com os módulos globais que não estavam sendo localizados).

sudo apt-get purge nodejs npm

Em seguida, ative o repositório da nodesource e instale:

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

Nota - o conselho anterior era usar o repo de Chris Lea, ele agora migrou para o nodesource, consulte:

De: aqui


13
Observe que o pacote nodejs inclui npm e nodejs-dev, portanto, a instalação de nodejs a partir do ppa fornece todo o necessário para o npm.
chawkinsuf

2
Obrigado! Isso funcionou para mim! Essa seria a resposta aceita para "Ask Ubuntu", mas parece que muitos usuários que não são do Ubuntu consideram a resposta aceita útil.
Dannyman

2
corri isso em pi raspbery e obteve falha da segmentação ao executar nodejs ou npm
Godzilla

5
Depois de usar estas instruções e obter uma falha de segmentação no raspberry pi (Raspbian), removi a porta e segui estas instruções gist.github.com/justinjenkins/16adc15338bb265f6808 agora funciona!
Justin Jenkins

2
-1 por recomendar que os recém-chegados inocentes façam algo tão imprudente e inseguro quanto o código de canalização de uma fonte não verificada na Internet para um shell raiz . Irresponsável dificilmente cobre. Você deve pelo menos ter uma ressalva sobre segurança, se não uma recomendação para verificar uma soma de verificação.
sorpigal 23/05

644

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

Eu tive que executar o comando abaixo:

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

No entanto, isso tornará os npmpacotes de instalação em uma conexão HTTP insegura. Se puder, você deve ficar com

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

em vez disso, instale sobre HTTPS.


6
Sim, isso também fez isso por mim. Obrigado por compartilhar!
Alix Axel

7
Usando um raspberry pi, e este é o mesmo comando que eu tive que usar. alterou registry.npmjs.org/pi-gpio para registry.npmjs.org/pi-gpio . Não tenho certeza que está acima com os https não acessíveis pela pi
Jdahern

28
Aviso: isso puxa os recursos em uma conexão / insegura /. Seus arquivos podem ser alterados antes de você obtê-los. Novamente: isso não é seguro.
Lodewijk

38
Não use esta solução não segura, mesmo que funcione. A versão apt-get do Node.js é muito antiga (0.6.12); Instalei a versão estável mais recente do GitHub e ele resolveu o problema.
Louis Ameline

2
Não funcionará para outros pacotes nodejs. Estou apenas baixando a versão mais recente do node.js do site oficial e compilando-a manualmente.
precisa

32

Estou no Ubuntu. Eu usei o apt-get para instalar o nó. O Npm não estava incluído nesse pacote; portanto, ele precisava ser instalado separadamente. Presumi que funcionaria, mas aparentemente a versão npm na distribuição Ubuntu estava desatualizada.

O wiki do nó possui esta instrução:

Obter uma versão recente do Node ou instalar no Ubuntu mais antigo e outras distribuições baseadas em apt pode exigir algumas etapas extras. Exemplo de instalação:

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

Depois disso, o npm já estava incluído e funcionou perfeitamente.


18

Para mim, geralmente é um problema de proxy e tento de tudo:

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
Desabilitando o Strict SSL usando npm config set strict-ssl falsewroked para mim.
Mayura

17

Você também precisa instalar o software-properties-common para que o add-apt-repository funcione. então 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

3
Após passos acima, todos nós precisamos fazer é: sudo npm instalar -g karma
Vijay

10

Uma coisa que funcionou para mim com erros aleatórios de instalação do npm (em que o pacote com erros é diferente em momentos diferentes (mas no mesmo ambiente) é usar isso:

npm cache clean

E depois repita o processo. Em seguida, o processo parecerá mais suave e o problema real e a mensagem de erro surgirão, onde você poderá corrigi-lo e prosseguir.

Isso se baseia na experiência de executar o npm install de um monte de pacotes em uma instalação bastante simples do Ubuntu dentro de uma instância do Docker. Às vezes, faltam ferramentas de construção / fabricação no Ubuntu e os erros npm não mostram o problema real até que você limpe o cache por algum motivo.


Sim, descobri que precisava executar isso, em conjunto com a resposta a partir daí.
John Powell

7

Esse problema ocorre devido ao protocolo https, razão pela qual a outra solução funciona (alternando para o protocolo não seguro).

Para mim, a melhor solução foi compilar a versão mais recente do nó, que inclui npm

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

6

Agora existem instruções oficiais de joyent (principal suporte para nodejs). Para o Ubuntu:

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

Para outras distribuições unix, osx e windows veja o link. Observe que isso instalará o nó e o npm.


5

A única coisa que funcionou para mim no Elementary OS Luna, um Ubuntu Fork. Estou na arquitetura x86. Eu tentei todas as respostas aqui, mas finalmente decidi instalá-lo da fonte.

Primeiro, verifique se ele não está instalado usando o gerenciador de pacotes:

sudo apt-get purge nodejs npm -y

Fui à página de download para procurar a fonte mais recente e fazer o download, http://nodejs.org/download/ . Você pode usar curl, wget ou seu navegador para obtê-lo:

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

A marca pode demorar um pouco. Quando terminar, você deve ter o node e o npm instalados e trabalhando no diretório / usr / local / bin, que já deve estar no seu caminho. Você deve verificar onde ele mora:

which npm node

Eu também tive que alterar as permissões para fazê-lo funcionar:

sudo chown -R $USER /usr/local

Se não funcionou, verifique seu caminho:

echo $PATH

Note que a instalação desta maneira, não será gerenciada pelo apt-get package manager. Felicidades!


Compartilhe qual é o problema, em vez de marcar isso. Funciona para mim! :)
radtek

2

O método abaixo funcionou para mim, Kudos para o usuário do github: midnightcodr

Certifique-se de remover todos os pacotes nodejs / npm já instalados.

sudo apt-get purge nodejs

sudo apt-get purge npm

Agora instale o nó js usando o comando abaixo (Graças a midnightcodr no github)

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

Observe que você pode chamar o nó com o nó de comando e não o nodejs.

Depois que o nó estiver instalado, instale o npm

sudo apt-get install npm

2

Recentemente, tive esse problema após atualizar o node.js (e inevitavelmente o npm) para a versão mais recente:

> npm --version < 2.0.0-alpha-5

Nota: Não pedi uma versão instável, apenas a peguei depois brew install npmno OSX.

A desatualização do npm corrigiu o problema para mim.

A maneira mais fácil de instalar o npm estável é, npm install -g npmmas ele pode não funcionar sob algumas circunstâncias e o downgrade do node.js pode ser necessário.


1

Pode ser que o registro npm esteja inativo no momento ou sua conexão tenha caído.

De qualquer maneira, você deve atualizar o nó e o npm.

Eu recomendaria o uso da nave para gerenciar seus ambientes de nós.

https://npmjs.org/package/nave

Ele permite que você instale facilmente versões e salte rapidamente entre elas.


1

para raspberry pi eu encontrei e modifiquei uma solução que encontrei
aqui é o que corri

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

o único mod que fiz foi mudar todos os 10,25 para 10,28, que foi o mais recente linux-arm-pi da época


0

@ A resposta de lá é a melhor. No entanto, as versões do nó avançaram sempre para cima e o versionamento foi complicado pelo surgimento do io.js. Seguindo as etapas de sua resposta, você terminará com a versão do Nó 0.10.25- não a versão mais recente.

Você ainda deve limpar todos os pacotes node / npm existentes com

sudo apt-get purge nodejs npm

e vá para a página de instalação da nodesource deb em https://github.com/nodesource/distributions#debinstall .

Todas as versões do Node.js estão listadas na página acima com os comandos do Linux para instalá-las. E esses pacotes funcionarão no Debian e no Ubuntu .

PS Se você deseja executar o Node v4.4 ou superior no Ubuntu Precise ou Debian Wheezy, revise as informações sobre a execução em distros mais antigas .

PPS Se o seu apt-get estiver falhando , o script não será concluído (as referências do Google falharam no meu apt-get update). Você deve ver mensagens sobre a chave de assinatura do NodeSource sendo adicionada ao seu chaveiro e uma mensagem final instruindo você Run 'apt-get install nodejs' to install Node.js.

O PPPS npm é instalado com o nó. Depois de instalado, você pode atualizar para as últimas npm comsudo npm install npm -g

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.