Résoudre les erreurs de connexion ECONNREFUSED et HTTP/2 avec npm et git

Contexte

Lorsque l'on travaille derrière un proxy ou un VPN, les commandes de téléchargement et de clonage peuvent échouer avec des messages comme ECONNREFUSED pour npm ou HTTP/2 stream was not closed cleanly pour git. Ces erreurs viennent le plus souvent d'une mauvaise configuration réseau ou d'un intermédiaire (proxy local, pare-feu, certificat SSL) qui bloque la requête avant qu'elle n'atteigne le serveur distant.

Diagnostiquer et corriger les erreurs npm

Une erreur typique ressemble à ceci :

npm ERR! code ECONNREFUSED
npm ERR! FetchError: request to https://registry.npmjs.org/ failed,
reason: connect ECONNREFUSED 127.0.0.1:31181

Cela signifie que npm tente d'atteindre un serveur de proxy local (ici 127.0.0.1:31181) qui n'est pas accessible. Pour identifier la cause, commencez par lister la configuration actuelle :

npm config list

Supprimer les paramètres proxy obsolètes

Si vous n'utilisez plus de proxy, supprimez les directives liées :

npm config delete proxy
npm config delete https-proxy

Définir un registre et un proxy explicites

Pour forcer l'utilisation d'un registre fiable et d'un proxy valide :

npm config set registry https://registry.npmjs.org/
npm config set proxy http://proxy.exemple.com:8080
npm config set https-proxy http://proxy.exemple.com:8080

Réinitialiser la configuration

Si aucune commande ne fonctionne, restaurez les valeurs par défaut :

npm config edit

Supprimez manuellement les lignes incorrectes, ou effacez le fichier de configuration et réinstallez npm proprement.

Diagnostiquer et corriger les erreurs git

git peut renvoyer une erreur de ce type :

fatal: unable to access 'https://github.com/utilisateur/projet.git/':
HTTP/2 stream 1 was not closed cleanly before end of the underlying stream

Vérifier et nettoyer la configuration proxy

Affichez les valeurs actuelles :

git config --global --get http.proxy
git config --global --get https.proxy

Pour les supprimer :

git config --global --unset http.proxy
git config --global --unset https.proxy

Forcer HTTP/1.1

La couche HTTP/2 est parfois instable avec certains proxies. Baissez temporairement la version utilisée par git :

git config --global http.version HTTP/1.1

Cloner via SSH

Pour contourner complètement les problèmes HTTPS, utilisez le protocole SSH :

git clone git@github.com:utilisateur/projet.git

Désactiver temporairement la vérification SSL

Ce réglage est utile uniquement pour un diagnostic rapide, car il réduit la sécurité :

git config --global http.sslVerify false

Une fois le problème identifié, réactivez-le :

git config --global http.sslVerify true

Mettre git à jour

Les anciennes versions peuvent mal gérer HTTP/2. Sur une distribution Debian ou Ubuntu :

sudo apt-get update
sudo apt-get install git

Bonnes pratiques

  • Préférez des variables d'environnement (HTTP_PROXY, HTTPS_PROXY) plutôt que des configurations globales fixes.
  • Utilisez npm config list et git config --list pour vérifier les paramètres hérités d'un ancien environnement.
  • Évitez de laisser http.sslVerify à false sur une machine de production.
  • Testez la connectivité avant de changer les réglages : curl -I https://registry.npmjs.org/ et curl -I https://github.com/.

Étiquettes: npm Git Proxy ECONNREFUSED HTTP/2

Publié le 22 juin à 20h38