Erreur SSL: CERT_UNTRUSTED lors de l'utilisation de la commande npm

159

J'essaie d'installer le cadre express à l'aide de la commande npm mais j'obtiens l'erreur suivante.

le message d'erreur est

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

aide moi à trier

Sudip7
la source

Réponses:

316

Vous pouvez contourner https en utilisant les commandes ci-dessous:

npm config set strict-ssl false

ou définissez l'URL du registre à partir de https ou http comme ci-dessous:

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

Cependant, personnellement, je pense que contourner https n'est pas la vraie solution, mais nous pouvons l'utiliser comme solution de contournement.

ramesh.mimit
la source
13
Solution du monde réel quelque peu dangereuse, mais agréable.
Bernard Saucier
1
Est-il possible de supprimer l'option de contournement une fois que nous avons utilisé la commande ci-dessus. Si oui, comment pouvons-nous supprimer l'option de contournement?
rash111 du
1
@ rash111 Je suppose que le régler sur true devrait fonctionner:npm config set strict-ssl true
Gromer
10
"belle solution du monde réel" ... Ce n'est pas du tout sympa, sauf si vous aimez être piraté.
trusktr
Merci! Ceci est également nécessaire lors de l'utilisation de npm dans une VM VirtualBox exécutant Ubuntu 14.04. C'est le seul moyen de corriger l'erreur CERT, elle survient même lorsque le registre est configuré sur "http://registry.npmjs.org/"lequel est la valeur par défaut.
Prahlad Yeri
53
npm ERR! node -v v0.8.0
npm ERR! npm -v 1.1.32

Mettez à jour votre installation node.js.Les commandes suivantes devraient le faire (à partir d' ici ):

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

Edit: d'accord, si vous avez vraiment une bonne raison d'exécuter une ancienne version du logiciel, npm set ca nullcela résoudra le problème. C'est arrivé, car le certificat npm intégré a expiré au fil des ans.

Alex
la source
3
J'utilise actuellement les deux versions ci-dessus, quel est votre point, je ne pouvais pas comprendre
Sudip7
1
Mon point est: ces versions sont anciennes et les certificats npm intégrés à ceux-ci sont déjà expirés. Si vous installez des versions récentes, elles fonctionneront.
alex
1
J'ai essayé d'installer la dernière version et j'ai rencontré un problème lors de l'installation. Quelqu'un dans le SO m'a suggéré d'installer la version ci-dessus, elle a été installée correctement, mais maintenant npm ne fonctionne pas. Je vous donne un lien vers ma question précédente stackoverflow.com/questions/21850871/…
Sudip7
24
J'ai trouvé que courir donne sudo npm cache clean -falors sudo npm install -g nune erreur CERT_UNTRUSTED après la deuxième commande.
fuzzi
2
Selon le lien référencé: "Cette méthode de mise à niveau du nœud est désormais instable et ne doit pas être utilisée. La meilleure façon de gérer les versions de Node.js est d'utiliser NVM: Node Version Management. !"
chus
22

J'ai eu le même problème et j'ai finalement compris que ma version de nœud est ancienne. Par exemple, vous pouvez installer la version actuelle du nœud LTS actif dans Ubuntu en suivant les étapes suivantes:

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

Les instructions d'installation pour plus de versions et de systèmes peuvent être trouvées dans le lien suivant:

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

majran
la source
A travaillé sur Ubuntu 14.
Vignesh Chinnaiyan
9

Je pense avoir la raison de l'erreur ci-dessus. Il s'agit du proxy d'entreprise (réseau privé virtuel) fourni pour fonctionner dans le réseau client. Sans cette connexion, j'ai souvent rencontré le même problème, que ce soit maven build ou npm install.

Sudip7
la source
5

Si vous êtes derrière un proxy d'entreprise, essayez ce paramètre pour npm avec le proxy de votre entreprise:

npm --https-proxy=http://proxy.company.com install express -g
Michael Oakley
la source
3
Si vous travaillez dans une grande organisation, il est courant d'avoir un serveur proxy entre vous et Internet. Parfois, cela provoque ce problème. (C'est le cas pour moi) Un test possible pour cela serait de retirer l'ordinateur du réseau et d'installer npm express à domicile.
Michael Oakley
2

Depuis que je suis tombé sur le message via google:

Essayez de l'utiliser npm cisera bien plus qu'un fichier npm install.

À partir du manuel:

En bref, les principales différences entre l'utilisation de npm install et npm ci sont:

  • Le projet doit avoir un package-lock.json ou npm-shrinkwrap.json existant.
  • Si les dépendances du verrou de package ne correspondent pas à celles de package.json, npm ci se fermera avec une erreur, au lieu de mettre à jour le verrou de package.
  • npm ci ne peut installer que des projets entiers à la fois: des dépendances individuelles ne peuvent pas être ajoutées avec cette commande.
  • Si un node_modules est déjà présent, il sera automatiquement supprimé avant que npm ci ne commence son installation.
  • Il n'écrira jamais dans package.json ni dans aucun des verrous de package: les installations sont essentiellement gelées.
HerrWalter
la source
1

Réinstallez le nœud, puis mettez à jour npm.

J'ai d'abord supprimé le nœud

apt-get purge node

Puis installez le node selon la distribution. Docs ici .

ensuite

npm install npm@latest -g
jplattus
la source