SSL-Fehler: CERT_UNTRUSTED bei Verwendung des Befehls npm

159

Ich versuche, das Express-Framework mit dem Befehl npm zu installieren, erhalte jedoch den folgenden Fehler.

Fehlermeldung ist

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

hilf mir zu klären

Sudip7
quelle

Antworten:

316

Sie können https mit den folgenden Befehlen umgehen:

npm config set strict-ssl false

oder legen Sie die Registrierungs-URL von https oder http wie folgt fest:

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

Persönlich glaube ich jedoch, dass das Umgehen von https nicht die wirkliche Lösung ist, aber wir können es als Problemumgehung verwenden.

ramesh.mimit
quelle
13
Etwas unsichere, aber schöne Lösung für die reale Welt.
Bernard Saucier
1
Ist es möglich, die Bypass-Option zu entfernen, sobald wir den obigen Befehl verwendet haben? Wenn ja, wie können wir die Bypass-Option entfernen?
rash111
1
@ rash111 Ich gehe davon aus, dass es funktionieren sollte, wenn es auf true gesetzt wird:npm config set strict-ssl true
Gromer
10
"nice real world solution" ... Das ist überhaupt nicht schön, es sei denn, Sie möchten gehackt werden.
Trusktr
Vielen Dank! Dies ist auch erforderlich, wenn Sie npm in einer VirtualBox-VM verwenden, auf der Ubuntu 14.04 ausgeführt wird. Dies ist die einzige Möglichkeit, den CERT-Fehler zu beheben. Dies tritt auch dann auf, wenn die Registrierung konfiguriert ist, für "http://registry.npmjs.org/"die dies die Standardeinstellung ist.
Prahlad Yeri
53
npm ERR! node -v v0.8.0
npm ERR! npm -v 1.1.32

Aktualisieren Sie die Installation von node.js. Die folgenden Befehle sollten dies tun (von hier aus ):

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

Bearbeiten: Okay, wenn Sie wirklich einen guten Grund haben, eine alte Version der Software auszuführen, npm set ca nullwird das Problem behoben. Es ist passiert, weil das eingebaute npm-Zertifikat im Laufe der Jahre abgelaufen ist.

Alex
quelle
3
Ich benutze derzeit über zwei Version, was ist Ihr Punkt, ich konnte nicht verstehen
Sudip7
1
Mein Punkt ist: Diese Versionen sind uralt und die darin enthaltenen integrierten npm-Zertifikate sind bereits abgelaufen. Wenn Sie aktuelle Versionen installieren, funktionieren diese.
alex
1
Ich habe versucht, die neueste Version zu installieren und habe während der Installation ein Problem festgestellt. Jemand in der SO schlug mir vor, die obige Version zu installieren. Sie wurde ordnungsgemäß installiert, aber jetzt funktioniert npm nicht mehr. Ich gebe Ihnen Link zu meiner vorherigen Frage stackoverflow.com/questions/21850871/…
Sudip7
24
Ich fand , dass läuft sudo npm cache clean -fdann sudo npm install -g neinen CERT_UNTRUSTED Fehler nach dem zweiten Befehl gibt.
Fuzzi
2
Laut dem Link, auf den verwiesen wird: "Diese Methode zum Aktualisieren des Knotens ist jetzt instabil und sollte nicht verwendet werden. Die beste Methode zum Verwalten von Node.js-Versionen ist die Verwendung von NVM: Node Version Management. !"
Chus
22

Ich hatte das gleiche Problem und schließlich habe ich verstanden, dass meine Knotenversion alt ist. Beispielsweise können Sie die aktuell aktive LTS-Knotenversion in Ubuntu mithilfe der folgenden Schritte installieren:

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

Installationsanweisungen für weitere Versionen und Systeme finden Sie unter folgendem Link:

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

Majran
quelle
Arbeitete an Ubuntu 14.
Vignesh Chinnaiyan
9

Ich glaube, ich habe den Grund für den obigen Fehler. Es ist der Unternehmens-Proxy (virtuelles privates Netzwerk), der bereitgestellt wird, um im Client-Netzwerk zu arbeiten. Ohne diese Verbindung hatte ich häufig das gleiche Problem, sei es Maven Build oder Npm Install.

Sudip7
quelle
5

Wenn Sie sich hinter einem Unternehmens-Proxy befinden, versuchen Sie diese Einstellung für npm mit dem Proxy Ihres Unternehmens:

npm --https-proxy=http://proxy.company.com install express -g
Michael Oakley
quelle
3
Wenn Sie in einer großen Organisation arbeiten, ist es üblich, einen Proxyserver zwischen Ihnen und dem Internet zu haben. Manchmal verursacht es dieses Problem. Ein möglicher Test hierfür wäre, den Computer aus dem Netzwerk zu entfernen und npm Express von zu Hause aus zu installieren.
Michael Oakley
2

Da bin ich über Google auf den Beitrag gestoßen:

Versuchen npm ciSie es zu verwenden wird viel mehr als ein npm install.

Aus dem Handbuch:

Kurz gesagt, die Hauptunterschiede zwischen der Verwendung von npm install und npm ci sind:

  • Das Projekt muss über eine vorhandene package-lock.json oder npm-shrinkwrap.json verfügen.
  • Wenn die Abhängigkeiten in der Paketsperre nicht mit denen in package.json übereinstimmen, wird npm ci mit einem Fehler beendet, anstatt die Paketsperre zu aktualisieren.
  • npm ci kann jeweils nur ganze Projekte installieren: Mit diesem Befehl können keine einzelnen Abhängigkeiten hinzugefügt werden.
  • Wenn ein node_modules bereits vorhanden ist, wird es automatisch entfernt, bevor npm ci mit der Installation beginnt.
  • Es wird niemals in package.json oder eine der Paket-Sperren geschrieben: Installationen werden im Wesentlichen eingefroren.
Herr Walter
quelle
1

Installieren Sie den Knoten neu und aktualisieren Sie dann npm.

Zuerst habe ich den Knoten entfernt

apt-get purge node

Installieren Sie dann den Knoten entsprechend der Verteilung. Docs hier .

Dann

npm install npm@latest -g
jplattus
quelle