Est-il possible de faire en sorte que npm install (la commande) fonctionne derrière un proxy?

Lisez à propos d’une variable proxy dans un fichier .npmrc mais cela ne fonctionne pas. Essayer d’éviter le téléchargement manuel nécessite tous des packages et une installation.

J’ai résolu ce problème de cette façon:

  1. Je lance cette commande:

     npm config set ssortingct-ssl false 
  2. Ensuite, définissez npm pour exécuter avec http, au lieu de https:

     npm config set registry "http://registry.npmjs.org/" 
  3. Ensuite, j’installe les paquets en utilisant cette syntaxe:

     npm --proxy http://username:password@cacheaddress.com.br:80 \ install packagename 

Ignorer le username:password si le proxy ne nécessite pas d’authentification

EDIT: Un de mes amis vient de signaler que NPM peut travailler derrière un proxy en définissant les variables d’environnement HTTP_PROXY et HTTPS_PROXY, puis en émettant normalement la commande npm install express (par exemple)

EDIT2: Comme @BStruthers l’a commenté, gardez à l’esprit que les mots de passe contenant “@” ne seront pas analysés correctement

Configuration du proxy npm

Pour HTTP :

 npm config set proxy http://proxy_host:port 

Pour HTTPS :

 npm config set https-proxy http://proxy.company.com:8080 

Remarque : le proxy https n’a pas https comme protocole, mais http .

En cas de doute, essayez toutes ces commandes, comme je le fais:

 npm config set registry http://registry.npmjs.org/ npm config set proxy http://myusername:mypassword@proxy.us.somecompany:8080 npm config set https-proxy http://myusername:mypassword@proxy.us.somecompany:8080 npm config set ssortingct-ssl false set HTTPS_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080 set HTTP_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080 export HTTPS_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080 export HTTP_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080 export http_proxy=http://myusername:mypassword@proxy.us.somecompany:8080 npm --proxy http://myusername:mypassword@proxy.us.somecompany:8080 \ --without-ssl --insecure -g install 

=======

METTRE À JOUR

Mettez vos parameters dans ~/.bashrc ou ~/.bash_profile afin de ne pas avoir à vous soucier de vos parameters à chaque fois que vous ouvrez une nouvelle fenêtre de terminal!

Si votre entreprise est comme la mienne, je dois changer mon mot de passe assez souvent. J’ai donc ajouté les éléments suivants dans mon fichier ~ / .bashrc ou ~ / .bash_profile de sorte que chaque fois que j’ouvre un terminal, je sais que mon npm est à jour!

  1. Il suffit de coller le code suivant au bas de votre fichier ~/.bashrc :

     ###################### # User Variables (Edit These!) ###################### username="myusername" password="mypassword" proxy="mycompany:8080" ###################### # Environement Variables # (npm does use these variables, and they are vital to lots of applications) ###################### export HTTPS_PROXY="http://$username:$password@$proxy" export HTTP_PROXY="http://$username:$password@$proxy" export http_proxy="http://$username:$password@$proxy" export https_proxy="http://$username:$password@$proxy" export all_proxy="http://$username:$password@$proxy" export ftp_proxy="http://$username:$password@$proxy" export dns_proxy="http://$username:$password@$proxy" export rsync_proxy="http://$username:$password@$proxy" export no_proxy="127.0.0.10/8, localhost, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16" ###################### # npm Settings ###################### npm config set registry http://registry.npmjs.org/ npm config set proxy "http://$username:$password@$proxy" npm config set https-proxy "http://$username:$password@$proxy" npm config set ssortingct-ssl false echo "registry=http://registry.npmjs.org/" > ~/.npmrc echo "proxy=http://$username:$password@$proxy" >> ~/.npmrc echo "ssortingct-ssl=false" >> ~/.npmrc echo "http-proxy=http://$username:$password@$proxy" >> ~/.npmrc echo "http_proxy=http://$username:$password@$proxy" >> ~/.npmrc echo "https_proxy=http://$username:$password@$proxy" >> ~/.npmrc echo "https-proxy=http://$username:$password@$proxy" >> ~/.npmrc ###################### # WGET SETTINGS # (Bonus Settings! Not required for npm to work, but needed for lots of other programs) ###################### echo "https_proxy = http://$username:$password@$proxy/" > ~/.wgetrc echo "http_proxy = http://$username:$password@$proxy/" >> ~/.wgetrc echo "ftp_proxy = http://$username:$password@$proxy/" >> ~/.wgetrc echo "use_proxy = on" >> ~/.wgetrc ###################### # CURL SETTINGS # (Bonus Settings! Not required for npm to work, but needed for lots of other programs) ###################### echo "proxy=http://$username:$password@$proxy" > ~/.curlrc 
  2. Ensuite, éditez les champs “username”, “password” et “proxy” dans le code que vous avez collé.

  3. Ouvrir un nouveau terminal

  4. Vérifiez vos parameters en exécutant la npm config list et cat ~/.npmrc

  5. Essayez d’installer votre module en utilisant

    • npm install __ , ou
    • npm --without-ssl --insecure install __ , ou
    • remplacez vos parameters de proxy en utilisant npm --without-ssl --insecure --proxy http://username:password@proxy:8080 install __ .
    • Si vous voulez que le module soit disponible globalement, ajoutez l’option -g

Avez-vous essayé les options de ligne de commande au lieu du fichier .npmrc ?

Je pense que quelque chose comme npm --proxy http://proxy-server:8080/ install {package-name} fonctionné pour moi.

J’ai également vu ce qui suit: npm config set proxy http://proxy-server:8080/

Bien qu’il y ait déjà beaucoup de bons conseils, pour mon environnement (Windows 7, en utilisant PowerShell) et la dernière version disponible de node.js (v8.1.2), tout ce qui précède n’a pas fonctionné, sauf lorsque j’ai suivi les parameters de brunowego .

Alors vérifiez vos parameters avec:

 npm config list 

Paramètres derrière un proxy:

 npm config set registry http://registry.npmjs.org/ npm config set http-proxy http://username:password@ip:port npm config set https-proxy http://username:password@ip:port npm config set proxy http://username:password@ip:port npm set ssortingct-ssl false 

J’espère que cela fera gagner du temps à quelqu’un

Pour configurer le proxy HTTP, l’ option -g doit être définie:

sudo npm config set proxy http://proxy_host:port -g

Pour le proxy https, assurez-vous à nouveau que l’ option -g est définie:

sudo npm config set https-proxy http://proxy_host:port -g

Cela fonctionne pour moi dans Windows:

 npm config set proxy http://domain%5Cuser:pass@host:port 

Si vous n’êtes dans aucun domaine, utilisez:

 npm config set proxy http://user:pass@host:port 

Si votre mot de passe contient des caractères spéciaux tels que " , @ etc., remplacez-les par leurs valeurs codées URL. Par exemple " -> %22 , @ -> %40 : -> %3A . %5C est utilisé pour le caractère \ .

 $ npm config set proxy http://login:pass@host:port $ npm config set https-proxy http://login:pass@host:port 

Bien que je mets proxy avec config, le problème n’a pas été résolu mais après celui-ci a fonctionné pour moi:

npm –https-proxy http://XX.AA.AA.BB:8080 installez cordova -plugins

npm –proxy http://XX.AA.AA.BB:8080 installer

J’ai essayé toutes ces options, mais mon proxy n’en avait aucune pour une raison quelconque. Puis, né de désespoir / désespoir, j’ai essayé au hasard de curl mon shell Git Bash, et cela a fonctionné.

Désactiver toutes les options de proxy en utilisant

 npm config rm proxy npm config rm https-proxy 

Et puis, exécuter npm install dans mon shell Git Bash a parfaitement fonctionné. Je ne sais pas comment il est configuré correctement pour le proxy et l’invite Windows cmd n’est pas, mais cela a fonctionné.

Cela a fonctionné pour moi-

 npm config set proxy http://proxy.company.com:8080 npm config set https-proxy http://proxy.company.com:8080 npm set ssortingct-ssl=false 

vim ~/.npmrc sur votre machine Linux et ajoutez les éléments suivants. N’oubliez pas d’append une partie de registry car cela entraîne des échecs dans de nombreux cas.

 proxy=http://: https-proxy=https://: registry=http://registry.npmjs.org/ 

Cela a fonctionné pour moi. Définissez le proxy http et https.

Essayez de trouver .npmrc dans C: \ Users \ .npmrc

puis ouvrez (bloc-notes), écrivez et enregistrez à l’intérieur:

 proxy=http://:@: 

PS: supprimer “<" et ">” s’il vous plaît !!

 npm config set proxy : npm config set registry http://registry.npmjs.org/ 

Cela a résolu mon problème.

Utilisez la commande ci-dessous à cmd ou GIT Bash ou autre invite

$ npm config set proxy ” http://192.168.1.101:4128

$ npm ensemble de configuration https-proxy ” http://192.168.1.101:4128

où 192.168.1.101 est proxy ip et 4128 est port. changer selon vos parameters de proxy. ses œuvres pour moi

Pour moi, même si python etc. fonctionnera bien, notre proxy d’entreprise npm ne le ferait pas.

j’ai essayé

npm config set proxy http://proxyccc.xxx.ca:8080 npm config set https-proxy https://proxyccc.xxx.ca:8080 npm config set registry http://registry.npmjs.org/

comme demandé, mais a continué à obtenir la même erreur.

Ce n’est que lorsque j’ai retiré https-proxy https://proxyccc.xxx.ca:8080 du fichier .npmrc que npm install electron –save-dev a fonctionné

Sur le système Windows

Essayez de supprimer les parameters du proxy et du registre (si ceux-ci sont déjà définis) et définissez les variables d’environnement sur la ligne de commande via

 SET HTTP_PROXY=http://username:password@domain:port SET HTTPS_PROXY=http://username:password@domain:port 

puis essayez de lancer npm install. De cette manière, vous ne définissez pas le proxy dans .npmrc mais pour cette session, cela fonctionnera.

Après avoir finalement attaché différentes réponses, les quatre premières lignes des réponses de @Kayvar m’aident à résoudre le problème:

 npm config set registry http://registry.npmjs.org/ npm config set proxy http://myusername:mypassword@proxy.us.somecompany:8080 npm config set https-proxy http://myusername:mypassword@proxy.us.somecompany:8080 npm config set ssortingct-ssl false 

De nombreuses applications (par exemple, npm) peuvent utiliser les parameters de proxy à partir des variables d’environnement utilisateur.

Vous pouvez simplement append à votre environnement les variables HTTP_PROXY et HTTPS_PROXY qui auront la même valeur pour chacune

http: // utilisateur: mot de passe @ proxyAddress: proxyPort

Par exemple, si vous avez Windows, vous pouvez append un proxy comme suit:

Comment ça a l'air sur Windows

Dans mon cas, j’ai oublié de définir le “http: //” dans mes fichiers de configuration (se trouvent dans les adresses proxy C: \ Users \ [USERNAME] \ .npmrc). Donc au lieu d’avoir

 proxy=http://[IPADDRESS]:[PORTNUMBER] https-proxy=http://[IPADDRESS]:[PORTNUMBER] 

j’avais

 proxy=[IPADDRESS]:[PORTNUMBER] https-proxy=[IPADDRESS]:[PORTNUMBER] 

Ce qui bien sûr n’a pas fonctionné, mais les messages d’erreur n’ont pas beaucoup aidé non plus …

Il y a eu beaucoup de réponses ci-dessus pour cette question, mais aucune n’a fonctionné pour moi. Tous mentionnés pour append le préfixe http:// . Alors je l’ai ajouté aussi. Tout a échoué.

Il fonctionne finalement après avoir accidentellement supprimé le préfixe http:// . La configuration finale est comme ceci:

 npm config set registry http://registry.npmjs.org/ npm config set http-proxy ip:port npm config set https-proxy ip:port npm config set proxy ip:port npm set ssortingct-ssl false 

Je ne connais pas la logique derrière cela, mais cela a fonctionné. Si aucune des réponses ci-dessus ne vous convient, vous pouvez peut-être essayer de cette façon. J’espère que celui-ci est utile.

quand je donne sans préfixe http / http dans les parameters du proxy, npm a échoué même lorsque l’hôte proxy et le port étaient des valeurs correctes. Cela a fonctionné seulement après l’ajout du préfixe de protocole.

Mon problème a été une erreur stupide de ma part. Comme j’avais rapidement abandonné un jour mes proxies dans un fichier Windows * .bat (http_proxy, https_proxy et ftp_proxy), j’ai oublié d’échapper aux caractères spéciaux du domaine \ user (% 5C) encodé en url et du mot de passe ayant le point d’interrogation. ‘?’ (% 3F). C’est-à-dire, une fois que vous avez la commande encodée, n’oubliez pas d’échapper à la commande ‘%’ dans le fichier bat.

j’ai changé

 set http_proxy=http://domain%5Cuser:password%3F@myproxy:8080 

à

 set http_proxy=http://domain%%5Cuser:password%%3F@myproxy:8080 

Peut-être que c’est un avantage, mais j’espère que cela aide quelqu’un.

Il y a de bonnes informations sur la page de curl sur les problèmes de SSL et de certificates . Je base la plupart de ma réponse sur les informations qui y figurent.

Utiliser ssortingct-ssl false est une mauvaise pratique et peut créer des problèmes. Ce que nous pouvons faire à la place, c’est append le certificate qui est injecté, par le certificate “man in the middle”.

Comment résoudre ce problème sous Windows:

  1. Téléchargez les certificates CA à partir de curl en fonction de l’ensemble CA de Mozilla. Vous pouvez également utiliser le script “firefox-db2pem.sh” de curl pour convertir votre firebase database Firefox locale.
  2. Accédez à une page Web à l’aide du protocole https, par exemple Stackoverflow dans Chrome ou Internet Explorer.
  3. Cliquez sur l’icône de locking, cliquez sur Afficher les certificates ou sur “Valid” dans Chrome.
  4. Accédez au chemin de certificateion. Le certificate supérieur ou le certificate racine est celui que nous voulons extraire. Cliquez sur ce certificate puis sur “Afficher le certificate”
  5. Cliquez sur le deuxième onglet, “Détails”. Cliquez sur “Copier dans un fichier”. Choisissez le format DER et notez où vous enregistrez le fichier. Choisissez un nom de fichier approprié, comme rootcert.cer
  6. Si vous avez installé Git, vous aurez openssl.exe. Sinon, installez git pour windows à ce stade. L’exécutable openssl sera probablement sur C: \ Program Files \ git \ usr \ bin \ openssl.exe. Nous allons utiliser openssl pour convertir le fichier au format PEM dont NPM a besoin pour le comprendre.
  7. Convertissez le fichier que vous avez enregistré à l’étape 5 en utilisant cette commande:
    openssl x509 -inform DES -in **rootcert**.cer -out outcert.pem -text
    rootcert est le nom de fichier du certificate que vous avez enregistré à l’étape 5.
  8. Ouvrez le fichier outcert.pem dans un éditeur de texte suffisamment intelligent pour comprendre les fins de ligne, et non le bloc-notes. Sélectionnez tout le texte et copiez-le dans le presse-papier.
  9. Nous allons maintenant coller ce contenu à la fin du bundle CA Cert effectué à l’étape 1. Ouvrez donc le cacert.pem dans votre éditeur de texte avancé. Accédez à la fin du fichier et collez le contenu de l’étape précédente à la fin du fichier. (Préservez la ligne vide en dessous de ce que vous venez de coller)
  10. Copiez le fichier cabundle.pem enregistré dans un emplacement approprié. Par exemple, votre% userprofile% ou ~. Notez l’emplacement du fichier.
  11. Nous allons maintenant dire à npm / yarn d’utiliser le nouveau paquet. En ligne de commande, écrivez
    npm config set cafile **C:\Users\username\cacert.pem
    C: \ Users \ nom d’utilisateur \ cacert.pem est le chemin de l’étape 10.
  12. Facultativement: activez à nouveau ssortingct-ssl, npm config set ssortingct-ssl true

Phew! Nous l’avons créé! Maintenant, npm peut comprendre comment se connecter. Bonus est que vous pouvez dire à curl d’utiliser le même cabundle.pem et il comprendra également les HTTP.