Erro SSL: CERT_UNTRUSTED ao usar o comando npm

159

Estou tentando instalar o framework expresso usando o comando npm, mas obtendo o seguinte erro.

mensagem de erro é

E:\myFindings\nodejs_programs\node>npm install -g express
npm http GET https://registry.npmjs.org/express
npm ERR! Error: SSL Error: CERT_UNTRUSTED
npm ERR!     at ClientRequest.<anonymous> (C:\Program Files\nodejs\node_modules\npm\node_modules\request\main.js:409:26)
npm ERR!     at ClientRequest.g (events.js:185:14)
npm ERR!     at ClientRequest.EventEmitter.emit (events.js:88:17)
npm ERR!     at HTTPParser.parserOnIncomingClient [as onIncoming] (http.js:1445:7)
npm ERR!     at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:111:23)
npm ERR!     at CleartextStream.socketOnData [as ondata] (http.js:1356:20)
npm ERR!     at CleartextStream.CryptoStream._push (tls.js:396:27)
npm ERR!     at SecurePair.cycle (tls.js:751:20)
npm ERR!     at EncryptedStream.CryptoStream.write (tls.js:131:13)
npm ERR!     at Socket.ondata (stream.js:38:26)
npm ERR!  [Error: SSL Error: CERT_UNTRUSTED]
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! System Windows_NT 6.1.7601
npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "-g" "express"
npm ERR! cwd E:\myFindings\nodejs_programs\node
npm ERR! node -v v0.8.0
npm ERR! npm -v 1.1.32
npm ERR! message SSL Error: CERT_UNTRUSTED
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     E:\myFindings\nodejs_programs\node\npm-debug.log
npm ERR! not ok code 0

me ajude a resolver

Sudip7
fonte

Respostas:

316

Você pode ignorar https usando os comandos abaixo:

npm config set strict-ssl false

ou defina o URL do registro de https ou http, como abaixo:

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

No entanto, pessoalmente, acredito que ignorar o https não é a solução real, mas podemos usá-lo como uma solução alternativa.

ramesh.mimit
fonte
13
Solução um tanto insegura, mas agradável do mundo real.
Bernard Saucier
1
É possível remover a opção de desvio depois que usamos o comando acima. Se sim, como podemos remover a opção de desvio?
Rash111
1
@ rash111 Suponho que defini-lo como true deve funcionar: #npm config set strict-ssl true
Gromer
10
"boa solução do mundo real" ... Isso não é nada agradável, a menos que você goste de ser hackeado.
trusktr
Obrigado! Isso também é necessário ao usar o npm em uma VM do VirtualBox executando o Ubuntu 14.04. Essa é a única maneira de corrigir o erro CERT, mesmo quando o registro está configurado para "http://registry.npmjs.org/"o padrão.
Prahlad Yeri
53
npm ERR! node -v v0.8.0
npm ERR! npm -v 1.1.32

Atualize a instalação do node.js.Os seguintes comandos devem fazê-lo (a partir daqui ):

sudo npm cache clean -f
sudo npm install -g n
sudo n stable

Edit: ok, se você realmente tem um bom motivo para executar uma versão antiga do software, npm set ca nullo problema será corrigido. Isso aconteceu porque o certificado npm interno expirou ao longo dos anos.

alex
fonte
3
Eu estou usando atualmente acima de dois versão, o que é seu ponto, eu não conseguia entender
Sudip7
1
O que quero dizer é: essas versões são antigas e os certificados npm internos já estão todos expirados. Se você instalar versões recentes, elas funcionarão.
19414 alex
1
Tentei instalar a versão mais recente e tive algum problema durante a instalação. Alguém no SO me sugeriu instalar a versão acima, ela foi instalada corretamente, mas agora o npm não está funcionando. Estou lhe dando um link para a minha pergunta anterior stackoverflow.com/questions/21850871/…
Sudip7
24
Eu achei que a execução sudo npm cache clean -f, em seguida, sudo npm install -g ndá um erro CERT_UNTRUSTED após o segundo comando.
Fuzzi
2
De acordo com o link referenciado: "Este método de atualização do nó agora é instável e não deve ser usado. A melhor maneira de gerenciar as versões do Node.js. é usar o NVM: Node Version Management. !"
chus
22

Eu tive o mesmo problema e finalmente entendi que a versão do meu nó é antiga. Por exemplo, você pode instalar a versão atual do nó LTS ativo no Ubuntu seguindo as seguintes etapas:

sudo apt-get update
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install nodejs -y

As instruções de instalação para mais versões e sistemas podem ser encontradas no seguinte link:

https://github.com/nodesource/distributions/blob/master/README.md

majran
fonte
Trabalhou no Ubuntu 14.
Vignesh Chinnaiyan
9

Acho que entendi o motivo do erro acima. É o proxy corporativo (rede virtual privada) fornecido para funcionar na rede do cliente. Sem essa conexão, eu frequentemente enfrentava o mesmo problema, seja ele compilado ou instalado pelo npm.

Sudip7
fonte
5

Se você possui um proxy corporativo, tente esta configuração para npm com o proxy da sua empresa:

npm --https-proxy=http://proxy.company.com install express -g
Michael Oakley
fonte
3
Se você trabalha em uma organização grande, é comum ter um servidor proxy entre você e a Internet. Às vezes, causa esse problema. (Foi o que aconteceu comigo) Um teste possível para isso seria retirar o computador da rede e instalar o npm express express de casa.
Michael Oakley
2

Desde que eu tropecei no post via google:

Tente usá- npm cilo será muito mais que umnpm install .

Do manual:

Em resumo, as principais diferenças entre o uso do npm install e do npm ci são:

  • O projeto deve ter um pacote-lock.json ou npm-shrinkwrap.json existente.
  • Se as dependências no bloqueio do pacote não corresponderem às do package.json, o npm ci será encerrado com um erro, em vez de atualizar o bloqueio do pacote.
  • O npm ci pode instalar projetos inteiros por vez: dependências individuais não podem ser adicionadas com este comando.
  • Se um node_modules já estiver presente, ele será removido automaticamente antes que o npm ci inicie sua instalação.
  • Ele nunca gravará no package.json ou em qualquer um dos bloqueios de pacotes: as instalações são essencialmente congeladas.
HerrWalter
fonte
1

Reinstale o nó e atualize o npm.

Primeiro eu removi o nó

apt-get purge node

Em seguida, instale o nó de acordo com a distribuição. Documentos aqui .

Então

npm install npm@latest -g
jplattus
fonte