Fehlermeldung
Error: ERR_PNPM_RESOLVING_NPM_RESOLVER_NETWORK_ERROR
Auch ausgegeben als
- Error: ERR_PNPM_PACKAGE_MANAGER_ADD_RESOLVE_LATEST
Der Code in der ersten Zeile hängt vom Befehl ab: ERR_PNPM_RESOLVING_NPM_RESOLVER_NETWORK_ERROR bei pnpm install, ERR_PNPM_PACKAGE_MANAGER_ADD_RESOLVE_LATEST bei pnpm add. Die Kette der Ursachen darunter lautet „Failed to fetch metadata from <url>: error sending request: client error (Connect): invalid peer certificate: UnknownIssuer“ und wird bei 80 Spalten umbrochen. pnpm 10 und älter laufen auf Node.js und melden stattdessen Node.js-Codes wie SELF_SIGNED_CERT_IN_CHAIN oder UNABLE_TO_GET_ISSUER_CERT_LOCALLY.
pnpm 12 (native binary, rustls) — registry request over HTTPS fails with "invalid peer certificate: UnknownIssuer"
Was der Fehler bedeutet
pnpm 12 konnte keine Paketmetadaten von der Registry abrufen, und die ausgegebene Kette von Ursachen endet mit „invalid peer certificate: UnknownIssuer“: ein Fehler bei der TLS-Prüfung. pnpm 12 ist ein natives Binary, dessen HTTP-Client Zertifikate mit rustls prüft, und „UnknownIssuer“ ist der einzige Code, mit dem rustls jedes Scheitern beim Aufbau der Kette meldet: unbekannte private CA, Root-Zertifikat eines Proxys, fehlendes Zwischenzertifikat oder selbstsigniertes Zertifikat.
Warum der Fehler auftritt
Zuerst die letzte Zeile prüfen: Der Code steht auch für einfache Netzwerkfehler
häufigERR_PNPM_RESOLVING_NPM_RESOLVER_NETWORK_ERROR wird auch bei DNS-, Verbindungs- und Proxy-Fehlern verwendet. Nur wenn die Kette der Ursachen mit „invalid peer certificate“ endet, handelt es sich um ein Zertifikatsproblem.
Eine private Registry mit Firmenzertifikat
häufigInterne Registrys mit Zertifikaten einer Firmen-CA, die nicht zu den CAs gehört, denen pnpm vertraut.
Ein Proxy mit TLS-Inspektion
häufigIn Firmennetzwerken wird registry.npmjs.org mit dem Root-Zertifikat des Proxys neu signiert.
Die Registry hat ein selbstsigniertes Zertifikat oder sendet nur ihr Leaf-Zertifikat
gelegentlichrustls unterscheidet diese Fälle nicht: Auch ein selbstsigniertes Zertifikat und ein fehlendes Zwischenzertifikat landen bei UnknownIssuer.
So behebst du den Fehler
- 1.
cafile in der .npmrc setzen
pnpm liest Konfigurationsdateien im Stil von npm; cafile (oder ein direkt angegebener Wert für ca) fügt die CA für Anfragen an die Registry hinzu.
ini ; .npmrc (project or ~/.npmrc) — read by pnpm as well as npm cafile=/etc/ssl/private-ca/corp-root-ca.pem - 2.
Root-Zertifikat im Zertifikatsspeicher des Betriebssystems installieren
In unserem Test hat pnpm 12 ein mit update-ca-certificates hinzugefügtes Root-Zertifikat akzeptiert; Root-Zertifikate, die die IT verteilt, funktionieren also ohne weitere Konfiguration.
bash # pnpm 12 also trusts the operating system's store sudo cp corp-root-ca.pem /usr/local/share/ca-certificates/corp-root-ca.crt sudo update-ca-certificates - 3.
Oder NODE_EXTRA_CA_CERTS verwenden
pnpm 12 beachtet die Variable ebenfalls, sodass eine einzige Einstellung für Node.js, npm und pnpm genügt.
bash # Honoured by pnpm 12 too, so one variable covers node, npm and pnpm export NODE_EXTRA_CA_CERTS=/etc/ssl/private-ca/corp-root-ca.pem pnpm install