Message d’erreur
Error: ERR_PNPM_RESOLVING_NPM_RESOLVER_NETWORK_ERROR
Également affiché sous la forme
- Error: ERR_PNPM_PACKAGE_MANAGER_ADD_RESOLVE_LATEST
Le code d’erreur affiché en tête dépend de la commande : ERR_PNPM_RESOLVING_NPM_RESOLVER_NETWORK_ERROR pour pnpm install, ERR_PNPM_PACKAGE_MANAGER_ADD_RESOLVE_LATEST pour pnpm add. La chaîne de causes affichée en dessous indique « Failed to fetch metadata from <url>: error sending request: client error (Connect): invalid peer certificate: UnknownIssuer » et est coupée en lignes de 80 colonnes. pnpm 10 et les versions antérieures s’exécutent sur Node.js et signalent à la place des codes Node.js comme SELF_SIGNED_CERT_IN_CHAIN ou UNABLE_TO_GET_ISSUER_CERT_LOCALLY.
pnpm 12 (native binary, rustls) — registry request over HTTPS fails with "invalid peer certificate: UnknownIssuer"
Ce que cela signifie
pnpm 12 n’a pas pu récupérer les métadonnées des paquets depuis le registre, et la chaîne de causes qu’il affiche se termine par « invalid peer certificate: UnknownIssuer » : un échec de vérification TLS. pnpm 12 est un binaire natif dont le client HTTP vérifie les certificats avec rustls, et « UnknownIssuer » est le code unique que rustls emploie pour tous les échecs de construction de chaîne : AC privée inconnue, racine d’un proxy, certificat intermédiaire manquant ou certificat auto-signé.
Pourquoi cela se produit
Vérifier d’abord la dernière ligne : ce code couvre aussi de simples erreurs réseau
fréquenteERR_PNPM_RESOLVING_NPM_RESOLVER_NETWORK_ERROR sert aussi pour les erreurs DNS, de connexion et de proxy. Il ne s’agit d’un problème de certificat que si la chaîne de causes se termine par « invalid peer certificate ».
Un registre privé avec un certificat d’entreprise
fréquenteDes registres internes signés par une AC d’entreprise qui ne figure pas parmi les AC auxquelles pnpm fait confiance.
Un proxy d’inspection TLS
fréquenteSur les réseaux d’entreprise, registry.npmjs.org est re-signé par la racine du proxy.
Un certificat de registre auto-signé ou un certificat feuille servi seul
occasionnellerustls ne distingue pas ces cas : un certificat auto-signé et un certificat intermédiaire manquant aboutissent eux aussi à UnknownIssuer.
Comment corriger l’erreur
- 1.
Définir cafile dans .npmrc
pnpm lit les fichiers de configuration au format npm ; cafile (ou une valeur ca en ligne) ajoute l’AC pour les requêtes vers le registre.
ini ; .npmrc (project or ~/.npmrc) — read by pnpm as well as npm cafile=/etc/ssl/private-ca/corp-root-ca.pem - 2.
Installer la racine dans le magasin du système d’exploitation
Lors de notre test, pnpm 12 a accepté une racine ajoutée avec update-ca-certificates : les racines déployées par le service informatique fonctionnent donc sans configuration supplémentaire.
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.
Ou utiliser NODE_EXTRA_CA_CERTS
pnpm 12 prend lui aussi en compte cette variable, ce qui permet de garder un seul réglage pour Node.js, npm et pnpm.
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