Antworten:
Ich habe dieses Problem folgendermaßen gelöst:
Ich führe diesen Befehl aus:
npm config set strict-ssl false
Stellen Sie dann npm so ein, dass es mit http anstelle von https ausgeführt wird:
npm config set registry "http://registry.npmjs.org/"
Dann installiere ich Pakete mit dieser Syntax:
npm --proxy http://username:password@cacheaddress.com.br:80 install packagename
Überspringen Sie den username:password
Teil, wenn Sie sich beim Proxy nicht authentifizieren müssen
EDIT: Ein Freund von mir nur darauf hingewiesen , dass Sie NPM an der Arbeit hinter einem Proxy erhalten können , indem BEID HTTP_PROXY und https_proxy Umgebungsvariablen, dann normalerweise den Befehl ausgibt Express npm installieren (zum Beispiel)
EDIT2: Beachten Sie, wie @BStruthers kommentierte, dass Passwörter mit "@" nicht korrekt analysiert werden, wenn @ das gesamte Passwort in Anführungszeichen setzt
my@password
, sollte Ihre .npmrc-Datei my%40password
für den Passwortteil enthalten sein. In Anführungszeichen zu setzen funktioniert in einigen Fällen, aber die Codierung ist kinderleicht.
npm
Proxy einrichten
Zum HTTP
:
npm config set proxy http://proxy_host:port
Zum HTTPS
:
Verwenden Sie die https-Proxy-Adresse, falls vorhanden
npm config set https-proxy https://proxy.company.com:8080
Andernfalls verwenden Sie die http-Proxy-Adresse erneut
npm config set https-proxy http://proxy.company.com:8080
Hinweis : Der https-Proxy hat aber kein https
Protokoll http
.
Versuchen Sie im Zweifelsfall alle diese Befehle wie folgt:
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
=======
Stellen Sie Ihre Einstellungen in ~/.bashrc
oder~/.bash_profile
Stellen Sie so, dass Sie sich nicht jedes Mal um Ihre Einstellungen kümmern müssen, wenn Sie ein neues Terminalfenster öffnen!
Wenn Ihre Firma wie meine ist, muss ich mein Passwort ziemlich oft ändern. Also habe ich Folgendes in mein ~ / .bashrc- oder ~ / .bash_profile eingefügt, damit ich weiß, dass meine npm auf dem neuesten Stand ist, wenn ich ein Terminal öffne!
Fügen Sie einfach den folgenden Code am Ende Ihrer ~/.bashrc
Datei ein:
######################
# 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
Bearbeiten Sie dann die Felder "Benutzername", "Passwort" und "Proxy" in dem Code, den Sie eingefügt haben.
Öffnen Sie ein neues Terminal
Überprüfen Sie Ihre Einstellungen, indem Sie npm config list
und ausführencat ~/.npmrc
Versuchen Sie, Ihr Modul mit zu installieren
npm install __
, oder npm --without-ssl --insecure install __
, oder 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
für npm config und dann installiert npm Paket mit npm --proxy http://myusername:mypassword@proxy.us.somecompany:8080 --without-ssl --insecure -g install {packagename}
. Danke
Haben Sie Befehlszeilenoptionen anstelle der .npmrc
Datei ausprobiert ?
Ich denke so etwas npm --proxy http://proxy-server:8080/ install {package-name}
hat bei mir funktioniert.
Ich habe auch folgendes gesehen:
npm config set proxy http://proxy-server:8080/
Obwohl es bereits viele gute Ratschläge gibt, funktionierten für meine Umgebung (Windows 7, mit PowerShell) und die letzte verfügbare Version von node.js (v8.1.2) alle oben genannten Funktionen nicht, außer wenn ich die Einstellungen von brunowego befolgte .
Überprüfen Sie Ihre Einstellungen mit:
npm config list
Einstellungen hinter einem 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
Hoffe, das spart jemandem Zeit
Das funktioniert bei mir unter Windows:
npm config set proxy http://domain%5Cuser:pass@host:port
Wenn Sie sich in keiner Domain befinden, verwenden Sie:
npm config set proxy http://user:pass@host:port
Wenn Sie Ihr Passwort Sonderzeichen wie enthält "
, @
, :
und so weiter, ersetzen Sie sie durch ihre URL codierten Werte. Zum Beispiel "
-> %22
, @
-> %40
, :
-> %3A
. %5C
wird für den Charakter verwendet \
.
encodeURIComponent("YourP@ssword")
, um die verschlüsselte Version Ihres Passworts zu erhalten.
Um den http-Proxy einzurichten, setzen Sie das Flag -g :
sudo npm config set proxy http://proxy_host:port -g
Stellen Sie für den https-Proxy erneut sicher, dass das Flag -g gesetzt ist:
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
Das hat bei mir funktioniert-
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
in Ihrem Linux-Computer und fügen Sie Folgendes hinzu. Vergessen Sie nicht, ein registry
Teil hinzuzufügen, da dies in vielen Fällen zu Fehlern führt.
proxy=http://<proxy-url>:<port>
https-proxy=https://<proxy-url>:<port>
registry=http://registry.npmjs.org/
https-proxy=https://..
inhttps-proxy=http://..
Schließlich habe ich es geschafft, dieses Problem als Behinde-Proxy mit AD-Authentifizierung zu lösen. Ich musste ausführen:
npm config set proxy http://domain%5Cuser:password@proxy:port/
npm config set https-proxy http://domain%5Cuser:password@proxy:port/
Es ist sehr wichtig, spezielle Zeichen wie Backshlash oder # per URL zu codieren. In meinem Fall musste ich codieren
backshlash
mit% 5C also domain\user will
seindomain%5Cuser
#
mit %23%0A
so passwort unterschreiben wie Password#2
es sein wirdPassword%23%0A2
Ich habe auch folgende Einstellungen hinzugefügt:
npm config set strict-ssl false
npm config set registry http://registry.npmjs.org/
Obwohl ich den Proxy mit config eingestellt habe, wurde das Problem nicht gelöst, aber nachdem dieser für mich funktioniert hat:
npm --https-proxy http://XX.AA.AA.BB:8080 Cordova-Plugins installieren
npm --proxy http://XX.AA.AA.BB:8080 installieren
Ich habe alle diese Optionen ausprobiert, aber mein Proxy hatte aus irgendeinem Grund nichts davon. Dann, aus Verzweiflung / Verzweiflung geboren, versuchte ich es zufälligcurl
in meiner Git Bash-Shell , und es hat funktioniert.
Deaktivieren aller Proxy-Optionen mit
npm config rm proxy
npm config rm https-proxy
Und dann npm install
funktionierte das Laufen in meiner Git Bash-Shell perfekt. Ich weiß nicht, wie es für den Proxy richtig eingerichtet ist und die Windows- cmd
Eingabeaufforderung nicht, aber es hat funktioniert.
npm config set proxy <http://...>:<port_number>
npm config set registry http://registry.npmjs.org/
Dies löste mein Problem.
Nachdem ich endlich verschiedene Antworten verknüpft habe, helfen mir die ersten vier Zeilen von @Kayvar answers, das Problem zu lösen:
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
Das hat bei mir funktioniert. Legen Sie den http- und https-Proxy fest.
Versuchen Sie, .npmrc in C: \ Users \ .npmrc zu finden
dann öffnen (Notizblock), schreiben und darin speichern:
proxy=http://<username>:<pass>@<proxyhost>:<port>
PS: entferne bitte "<" und ">" !!
Für mich, obwohl Python usw. alle funktionieren, obwohl unser Corporate Proxy npm dies nicht tun würde.
Ich habe es versucht
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/
wie angewiesen, bekam aber immer den gleichen Fehler.
Erst als ich
aus der .npmrc-Datei entfernte,
https-proxy https://proxyccc.xxx.ca:8080
funktionierte npm install elektron --save-dev
https-proxy
ist wahrscheinlich nicht https:
. Zumindest ist es wahrscheinlich nicht korrekt, für jeden den gleichen Port zu haben, aber ich denke, beide haben wahrscheinlich den gleichen Wert.
Auf dem Windows-System
Entfernen Sie die Proxy- und Registrierungseinstellungen (falls bereits festgelegt) und legen Sie die Umgebungsvariablen in der Befehlszeile über fest
SET HTTP_PROXY=http://username:password@domain:port
SET HTTPS_PROXY=http://username:password@domain:port
Versuchen Sie dann, npm install auszuführen. Auf diese Weise legen Sie den Proxy nicht in .npmrc fest, aber für diese Sitzung funktioniert es.
SET HTTP_PROXY http://username:password@domain:port
aber das Umschalten auf SET HTTP_PROXY=http://username:password@domain:port
schien alles zum Laufen zu bringen
Verwenden Sie den folgenden Befehl bei cmd oder GIT Bash oder einer anderen Eingabeaufforderung
$ npm config set proxy " http://192.168.1.101:4128 "
$ npm config set https-proxy " http://192.168.1.101:4128 "
Dabei ist 192.168.1.101 die Proxy-IP und 4128 der Port. Ändern Sie entsprechend Ihren Proxy-Einstellungen. es funktioniert für mich.
Viele Anwendungen (z. B. npm) können die Proxy-Einstellung von Benutzerumgebungsvariablen verwenden.
Sie können Ihrer Umgebung einfach die folgenden Variablen hinzufügen: HTTP_PROXY und HTTPS_PROXY , die für jeden den gleichen Wert haben
http: // user: password @ proxyAddress: proxyPort
Wenn Sie beispielsweise Windows haben, können Sie den Proxy wie folgt hinzufügen:
In meinem Fall habe ich vergessen, das "http: //" in meinen Konfigurationsdateien (zu finden unter C: \ Users \ [USERNAME] \ .npmrc) Proxy-Adressen festzulegen. Also anstatt zu haben
proxy=http://[IPADDRESS]:[PORTNUMBER]
https-proxy=http://[IPADDRESS]:[PORTNUMBER]
ich hatte
proxy=[IPADDRESS]:[PORTNUMBER]
https-proxy=[IPADDRESS]:[PORTNUMBER]
Was natürlich nicht funktioniert hat, aber die Fehlermeldungen haben auch nicht viel geholfen ...
Es gab oben viele Antworten auf diese Frage, aber keine davon hat für mich funktioniert. Alle von ihnen erwähnt, um http://
Präfix hinzuzufügen . Also habe ich es auch hinzugefügt. Alles fehlgeschlagen.
Es funktioniert endlich, nachdem ich versehentlich das http://
Präfix entfernt habe . Die endgültige Konfiguration sieht folgendermaßen aus:
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
Ich kenne die Logik dahinter nicht, aber es hat funktioniert. Wenn keine der oben genannten Antworten für Sie funktioniert, können Sie es vielleicht auf diese Weise versuchen. Hoffe, dieser ist nützlich.
Auf der Curl-Seite finden Sie gute Informationen zu SSL- und Zertifikatproblemen . Ich stütze den größten Teil meiner Antwort auf die dortigen Informationen.
Die Verwendung von strict-ssl false ist eine schlechte Praxis und kann zu Problemen führen. Stattdessen können wir das Zertifikat hinzufügen, das vom Zertifikat "Mann in der Mitte" injiziert wird.
So lösen Sie dies unter 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
Puh! Wir haben es geschafft! Jetzt kann npm verstehen, wie man eine Verbindung herstellt. Der Bonus ist, dass Sie curl anweisen können, dasselbe cabundle.pem zu verwenden, und dass es auch HTTPs versteht.
Hier sind die Schritte, die ich befolgt habe (Windows):
C:\Users\<WIN_USERNAME>\.npmrc
Exportieren Sie das Zertifikat von der folgenden Adresse in Ihr Dateisystem: https://registry.npmjs.org
Navigieren Sie zum exportierten Zertifikatspeicherort und geben Sie den folgenden Befehl ein:
npm config set cafile npm_certificate.cer
Fügen Sie der Datei die folgenden Änderungen hinzu:
registry=https://registry.npmjs.org/
strict-ssl=false
https-proxy=http://[proxy_user]:[proxy_password]@[proxy_ip]:[proxy_port]/
cafile=npm_certificate.cer
Jetzt sollten Sie bereit sein zu gehen!
Mein Problem war ein dummer Fehler von meiner Seite. Da ich eines Tages meine Proxys schnell in eine Windows * .bat-Datei (http_proxy, https_proxy und ftp_proxy) abgelegt hatte, vergaß ich, die Sonderzeichen für die URL-codierte Domain \ user (% 5C) und das Kennwort mit dem Fragezeichen zu maskieren '?' (% 3F). Das heißt, wenn Sie den codierten Befehl haben, vergessen Sie nicht, das '%' im Befehl bat file zu maskieren.
ich habe mich verändert
set http_proxy=http://domain%5Cuser:password%3F@myproxy:8080
zu
set http_proxy=http://domain%%5Cuser:password%%3F@myproxy:8080
Vielleicht ist es ein Randfall, aber hoffentlich hilft es jemandem.
Wenn ich in den Proxy-Einstellungen ohne http / http-Präfix gebe, ist npm fehlgeschlagen, selbst wenn der Proxy-Host und der Port die richtigen Werte hatten. Es funktionierte erst nach dem Hinzufügen des Protokollpräfix.
Öffnen Sie einfach das neue Terminal und geben Sie npm config edit
und ein npm config -g edit
. Auf Standardeinstellung zurücksetzen. Öffnen npm --without-ssl --insecure --proxy http://username:password@proxy:8080 install <package>
Sie nach dem Schließen des Terminals das neue und geben Sie es ein, wenn Sie es global hinzufügen möchten -g
.
Es hat bei mir funktioniert, hoffe es funktioniert bei dir :)