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 listetgit config --listpour vérifier les paramètres hérités d'un ancien environnement. - Évitez de laisser
http.sslVerifyàfalsesur une machine de production. - Testez la connectivité avant de changer les réglages :
curl -I https://registry.npmjs.org/etcurl -I https://github.com/.