Réponses:
J'ai résolu ce problème de cette façon:
J'exécute cette commande:
npm config set strict-ssl false
Définissez ensuite npm pour qu'il s'exécute avec http, au lieu de https:
npm config set registry "http://registry.npmjs.org/"
Ensuite, j'installe des packages en utilisant cette syntaxe:
npm --proxy http://username:password@cacheaddress.com.br:80 install packagename
Ignorez la username:password
partie si le proxy ne vous oblige pas à vous authentifier
EDIT: Un de mes amis vient de signaler que vous pouvez obtenir NPM travailler derrière un proxy en définissant DEUX HTTP_PROXY et variables d'environnement https_proxy, alors il utilise normalement la commande NPM installation express (par exemple)
EDIT2: Comme l'a commenté @BStruthers, gardez à l'esprit que les mots de passe contenant "@" ne seront pas analysés correctement, si contient @ mettez le mot de passe entier entre guillemets
my@password
, votre fichier .npmrc devrait avoir my%40password
pour la partie mot de passe. Le mettre entre guillemets fonctionne dans certains cas, mais l'encoder est infaillible.
Configurer le npm
proxy
Pour HTTP
:
npm config set proxy http://proxy_host:port
Pour HTTPS
:
utilisez l'adresse proxy https s'il y en a une
npm config set https-proxy https://proxy.company.com:8080
sinon réutiliser l'adresse proxy http
npm config set https-proxy http://proxy.company.com:8080
Remarque : le https-proxy 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 strict-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
=======
Mettez vos paramètres dans ~/.bashrc
ou ~/.bash_profile
vous n'avez donc pas à vous soucier de vos paramètres à 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é ce qui suit dans mon ~ / .bashrc ou ~ / .bash_profile pour que chaque fois que j'ouvre un terminal, je sais que mon npm est à jour!
Collez simplement le code suivant au bas de votre ~/.bashrc
fichier:
######################
# 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 strict-ssl false
echo "registry=http://registry.npmjs.org/" > ~/.npmrc
echo "proxy=http://$username:$password@$proxy" >> ~/.npmrc
echo "strict-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
Modifiez ensuite les champs "nom d'utilisateur", "mot de passe" et "proxy" dans le code que vous avez collé.
Ouvrez un nouveau terminal
Vérifiez vos paramètres en exécutant npm config list
etcat ~/.npmrc
Essayez d'installer votre module en utilisant
npm install __
, ou npm --without-ssl --insecure install __
, ou npm --without-ssl --insecure --proxy http://username:password@proxy:8080 install __
.-g
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 strict-ssl false
pour config NPM puis installé le paquet de NPM à l' aide npm --proxy http://myusername:mypassword@proxy.us.somecompany:8080 --without-ssl --insecure -g install {packagename}
. Merci
Avez-vous essayé les options de ligne de commande au lieu du .npmrc
fichier?
Je pense que quelque chose comme ça a 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 existe déjà de nombreux bons conseils, pour mon environnement (Windows 7, utilisant PowerShell) et la dernière version disponible de node.js (v8.1.2), tout cela n'a pas fonctionné, sauf lorsque j'ai suivi les paramètres de brunowego .
Vérifiez donc vos paramètres 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 strict-ssl false
J'espère que cela fera gagner du temps à quelqu'un
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 "
, @
, :
et ainsi de suite, de les remplacer par leurs valeurs codées URL. Par exemple "
-> %22
, @
-> %40
, :
-> %3A
. %5C
est utilisé pour le personnage \
.
encodeURIComponent("YourP@ssword")
pour obtenir la version encodée de votre mot de passe.
Pour configurer le proxy http, définissez l'indicateur -g :
sudo npm config set proxy http://proxy_host:port -g
Pour le proxy https, assurez-vous à nouveau que l' indicateur -g est défini:
sudo npm config set https-proxy http://proxy_host:port -g
$ npm config set proxy http://login:pass@host:port
$ npm config set https-proxy http://login:pass@host:port
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 strict-ssl=false
vim ~/.npmrc
dans votre machine Linux et ajoutez ce qui suit. N'oubliez pas d'ajouter une registry
pièce car cela provoque une défaillance dans de nombreux cas.
proxy=http://<proxy-url>:<port>
https-proxy=https://<proxy-url>:<port>
registry=http://registry.npmjs.org/
https-proxy=https://..
enhttps-proxy=http://..
Enfin, j'ai réussi à résoudre ce problème en étant un proxy avec l'authentification AD. J'ai dû exécuter:
npm config set proxy http://domain%5Cuser:password@proxy:port/
npm config set https-proxy http://domain%5Cuser:password@proxy:port/
Il est très important de coder par URL tous les caractères spéciaux comme le backshlash ou # Dans mon cas, j'ai dû coder
backshlash
avec% 5C alors domain\user will
soyezdomain%5Cuser
#
signer avec %23%0A
un mot de passe comme Password#2
seraPassword%23%0A2
J'ai également ajouté les paramètres suivants:
npm config set strict-ssl false
npm config set registry http://registry.npmjs.org/
Bien que j'aie défini un 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 installer les plugins cordova
npm --proxy http://XX.AA.AA.BB:8080 install
J'ai essayé toutes ces options, mais mon proxy n'en avait aucune pour une raison quelconque. Puis, né de la désespoir / désespoir, j'ai essayé curl
au hasard dans mon shell Git Bash, et ça a marché.
Désinitialisation de toutes les options de proxy à l'aide de
npm config rm proxy
npm config rm https-proxy
Et puis, courir npm install
dans mon shell Git Bash a parfaitement fonctionné. Je ne sais pas comment il est correctement configuré pour le proxy et l' cmd
invite Windows ne l'est pas, mais cela a fonctionné.
npm config set proxy <http://...>:<port_number>
npm config set registry http://registry.npmjs.org/
Cela a résolu mon problème.
Après avoir finalement lié 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 strict-ssl false
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://<username>:<pass>@<proxyhost>:<port>
PS: supprimez "<" et ">" s'il vous plaît !!
Pour moi, même si python, etc. fonctionnera tous, alors que 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 indiqué mais continuait à obtenir la même erreur.
Ce n'est que lorsque j'ai supprimé
https-proxy https://proxyccc.xxx.ca:8080
du fichier .npmrc que npm install electron --save-dev a fonctionné
https-proxy
n'est probablement pas le cas https:
. Au moins, avoir le même port pour chacun n'est probablement pas correct, mais je pense qu'ils ont probablement tous les deux la même valeur.
Sur le système Windows
Essayez de supprimer les paramètres de proxy et de registre (s'ils 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
essayez ensuite d'exécuter l'installation de npm. Par cela, vous ne définirez pas le proxy en .npmrc mais pour cette session, cela fonctionnera.
SET HTTP_PROXY http://username:password@domain:port
mais le passage à SET HTTP_PROXY=http://username:password@domain:port
semblait tout faire fonctionner
Utilisez la commande ci-dessous à cmd ou GIT Bash ou à une autre invite
$ npm config set proxy " http://192.168.1.101:4128 "
$ npm config set https-proxy " http://192.168.1.101:4128 "
où 192.168.1.101 est l'IP proxy et 4128 est le port. changer en fonction de vos paramètres de proxy. ses travaux pour moi.
De nombreuses applications (par exemple npm) peuvent utiliser les paramètres de proxy à partir des variables d'environnement utilisateur.
Vous pouvez simplement ajouter à 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 ajouter un proxy comme suit:
Dans mon cas, j'ai oublié de définir les adresses proxy "http: //" dans mes fichiers de configuration (qui se trouvent dans C: \ Users \ [USERNAME] \ .npmrc). Donc au lieu d'avoir
proxy=http://[IPADDRESS]:[PORTNUMBER]
https-proxy=http://[IPADDRESS]:[PORTNUMBER]
j'ai eu
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 ont mentionné l'ajout d'un http://
préfixe. Je l'ai donc ajouté aussi. Tout a échoué.
Cela fonctionne finalement après que j'ai accidentellement supprimé le http://
préfixe. 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 strict-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.
Il y a de bonnes informations sur la page de curl sur SSL et les problèmes de certificats . Je base l'essentiel de ma réponse sur les informations qui s'y trouvent.
L'utilisation de strict-ssl false est une mauvaise pratique et peut créer des problèmes. Ce que nous pouvons faire à la place, c'est ajouter le certificat qui est injecté, par le certificat "l'homme au milieu".
Comment résoudre ce problème sous Windows:
openssl x509 -inform DES -in **rootcert**.cer -out outcert.pem -text
npm config set cafile **C:\Users\username\cacert.pem
npm config set strict-ssl true
Phew! On l'a fait! Maintenant, npm peut comprendre comment se connecter. Le bonus est que vous pouvez dire à curl d'utiliser le même cabundle.pem et il comprendra également les HTTP.
Voici les étapes que j'ai suivies (Windows):
C:\Users\<WIN_USERNAME>\.npmrc
Exportez le certificat vers votre système de fichiers à partir de l'adresse suivante: https://registry.npmjs.org
Accédez à l'emplacement du certificat exporté et exécutez la commande suivante:
npm config set cafile npm_certificate.cer
Ajoutez les modifications suivantes au fichier:
registry=https://registry.npmjs.org/
strict-ssl=false
https-proxy=http://[proxy_user]:[proxy_password]@[proxy_ip]:[proxy_port]/
cafile=npm_certificate.cer
Vous devriez maintenant être prêt à partir!
Mon problème se résumait à une erreur stupide de ma part. Comme j'avais un jour rapidement déposé mes proxys dans un fichier windows * .bat (http_proxy, https_proxy et ftp_proxy), j'ai oublié d'échapper les caractères spéciaux pour le domaine \ user encodé en url \ user (% 5C) et le 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 au '%' dans la commande bat file.
j'ai changé
set http_proxy=http://domain%5Cuser:password%3F@myproxy:8080
à
set http_proxy=http://domain%%5Cuser:password%%3F@myproxy:8080
C'est peut-être un cas de pointe, mais j'espère que cela aide quelqu'un.
lorsque je donne sans le préfixe http / http dans les paramètres proxy, npm a échoué même lorsque l'hôte proxy et le port étaient des valeurs correctes. Cela n'a fonctionné qu'après l'ajout du préfixe de protocole.
Ouvrez simplement le nouveau terminal et tapez npm config edit
et npm config -g edit
. Réinitialiser les paramètres par défaut. Après avoir fermé le terminal, ouvrez le nouveau et tapez npm --without-ssl --insecure --proxy http://username:password@proxy:8080 install <package>
si vous en avez besoin globalement, ajoutez-le -g
.
Cela a fonctionné pour moi, j'espère que cela fonctionnera pour vous :)