Ich muss mehrere Pakete über npm herunterladen, aber unsere Unternehmens-Proxy-Konfiguration ist eine .pac-Datei (ich bin unter Windows)
Ich habe es schon versucht
npm config set proxy http://mydomain\username:[email protected]:8181/proxy.pac
npm config set https-proxy http://mydomain\username:[email protected]:8181/proxy.pac
oder
npm config set proxy http://1.2.3.4:8181/proxy.pac
npm config set https-proxy http://1.2.3.4:8181/proxy.pac
aber es funktioniert nicht ...
irgendein Vorschlag? Vielen Dank
proxy.pac
Datei zu öffnen , um die Proxy-Adresse daraus zu erhalten. (In meinem Fall musste ich einfach den Port auf 8080 umstellen).Antworten:
Ich hatte gerade ein sehr ähnliches Problem, bei dem ich npm nicht dazu bringen konnte, hinter unserem Proxyserver zu arbeiten.
Mein Benutzername hat die Form "Domäne \ Benutzername" - einschließlich des Schrägstrichs in der Proxy-Konfiguration wurde ein Schrägstrich angezeigt. Geben Sie also Folgendes ein:
Wenn Sie dies
npm config get proxy
ausführen, wird Folgendes zurückgegeben: http: // domain / username: password @ servername: port /Um das Problem zu beheben, habe ich stattdessen den Backslash per URL codiert und Folgendes eingegeben:
und damit wurde der Proxy-Zugriff behoben.
quelle
strict-ssl=false
zu der.npmrc
für mich gelösten Konfigurationsdatei hinter einem Unternehmens-Proxy - siehe Antworten von @ ovidiu-buligan und @ karthikeyan-aSuchen Sie in den LAN-
pac
Einstellungen des Internet Explorers nach der URL der Datei und laden Sie die pac-Datei von der konfigurierten URL herunter. Die pac-Datei ist nur eine Javascript-Datei mit einer Funktion namensFindProxyForURL
die in verschiedenen Szenarien verschiedene Proxy-Hosts zurückgibt.Versuchen Sie, in dieser pac-Datei einen Host zu finden, der Ihrer Meinung nach für den allgemeinen Webverkehr bestimmt ist, und schließen Sie ihn an .npmrc in an
C:\Users\<username>\.npmrc
Obwohl Sie sich möglicherweise mit Ihrer Domain und Ihrem Benutzernamen auf Ihrem Unternehmenscomputer anmelden, ist es sehr wahrscheinlich, dass der Domainname des Active Directory-Benutzers für den Proxy nicht erforderlich ist nur der Benutzername und das Kennwort (die sich möglicherweise von Ihrer Active Directory-Anmeldung unterscheiden).
Vergessen Sie nicht, mit dem Entkommen von Sonderzeichen zu experimentieren.
quelle
Laden Sie Ihre
.pac
Datei herunter . Öffnen Sie es in einem beliebigen Editor und suchen Sie nachPROXY = "PROXY X.X.X.X:80;
. Sie können viele Proxys haben, einen davon kopieren und die folgenden Terminalbefehle ausführen:Jetzt sollten Sie in der Lage sein, jedes Paket zu installieren!
quelle
git config --global http.proxy http://X.X.X.X:80
git config --global https.proxy http://X.X.X.X:80
Ich habe dieses Problem folgendermaßen gelöst:
1) Ich führe diesen Befehl aus:
npm config set strict-ssl false
2) Stellen Sie dann npm so ein, dass es mit http anstelle von https ausgeführt wird:
npm config set registry "http://registry.npmjs.org/"
3) Installieren Sie dann Ihr Paket
npm install <package name>
quelle
ca[]
Eigenschaft auf npm ordnungsgemäß einzurichten .Um @Steve Roberts Antwort zu erweitern.
Ich musste meine
domain\user
Zeichenfolge auch per URL codieren. Ich habe jedoch ein Leerzeichen in meinem Benutzernamen, sodass ich ein+
Leerzeichen für die Codierung der Leerzeichen-URL eingefügt habe. Diese wird jedoch doppelt codiert als%2B
(dies ist die URL-Codierung für das Pluszeichen, jedoch die URL Codierung für ein Leerzeichen ist%20
), daher musste ich stattdessen Folgendes tun:Befehl npm
Fehlerbehebung bei npm config
Ich habe das benutzt
npm config list
, um die oben festgelegten analysierten Werte abzurufen, und so habe ich von der Doppelcodierung erfahren. Seltsam.Im Wesentlichen müssen Sie die folgenden Anforderungen herausfinden:
DOMAIN
Zeichenfolge für die Authentifizierung erforderlichGrüße.
WINDOWS UMWELTVARIABLEN (CMD-Eingabeaufforderung)
Aktualisieren
Es stellte sich heraus, dass ich trotz der oben genannten Konfigurationen immer noch Probleme mit einigen Paketen / Skripten hatte, die den Request - Simplified HTTP-Client intern zum Herunterladen von Inhalten verwenden. Wie in der obigen Readme-Datei erläutert, können wir Umgebungsvariablen angeben , um den Proxy in der Befehlszeile , und Request berücksichtigt diese Werte.
Nach mehreren Versuchen (eher wie Tage), die Umgebungsvariablen festzulegen (und ich gebe dies nur ungern zu ), gelang es mir schließlich, die folgenden Richtlinien festzulegen:
cntlm
Ich habe die oben beschriebene Technik einige Wochen lang angewendet, bis mir klar wurde, wie viel Aufwand für die Aktualisierung meines Kennworts für alle Tools erforderlich ist, für die das Proxy-Setup erforderlich ist.
Neben npm benutze ich auch:
cntlm Setup-Schritte
Also habe ich cntlm installiert . Die Einstellung
cntlm
ist ziemlich schwierig, Sie suchen nach der INI-Datei @C:\Program Files\Cntlm\cntlm.ini
C:\Program Files\Cntlm\cntlm.ini
(möglicherweise benötigen Sie Administratorrechte)Username
undDomain
Zeilen (Zeile 8-9 denke ich)Auf cmd Eingabeaufforderung ausführen:
Die Ausgabe, die Sie erhalten
cntlm -H
, sieht ungefähr so aus:#
Vorher-Zeile hinzuPassLM
undPassNT
verwenden Sie sie nichtcntlm -H
in die INI-Datei ein und ersetzen Sie die Zeilen fürPassLM
,PassNT
undPassNTMLv2
oder kommentieren Sie die ursprünglichen Zeilen und fügen Sie Ihre hinzu.Proxy
Server hinzu. Wenn Sie nicht wissen, was der Proxyserver ist ... Tun Sie, was ich getan habe, ich habe nach meiner Proxy-Autokonfigurationsdatei gesucht, indem ich nach demAutoConfigURL
Registrierungsschlüssel in gesucht habeHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
. Navigieren Sie zu dieser URL und durchsuchen Sie den Code, der zufällig JavaScript ist.Listen ####
Zeile , in der####
sich die Portnummer befindet.Richten Sie NPM mit cntlm ein
Wenn Sie also npm auf Ihren cntml-Proxy verweisen, können Sie die von mir verwendete IP-
localhost
Adresse und den Standardport für cntlm verwenden,3128
damit meine Proxy-URL so aussiehtMit dem richtigen Befehl:
Ist viel einfacher. Sie richten alle Ihre Tools mit derselben URL ein und aktualisieren das Kennwort nur an einer Stelle. Das Leben ist so viel einfacher nicht.
Muss das npm CA-Zertifikat einrichten
Aus der npm-Dokumentation ca.
Wenn Ihr Unternehmens-Proxy https-Verbindungen mit einem eigenen selbstsignierten Zertifikat abfängt, sollten Sie dies vermeiden
(großes Nein-Nein).npm config set strict-ssl false
Grundlagen
\n
.npmrc
Zeile hinzufügenca[]="-----BEGIN CERTIFICATE-----\nXXXX\nXXXX\n-----END CERTIFICATE-----"
Probleme
Ich habe bemerkt, dass manchmal npm hängt, also stoppe ich (manchmal gewaltsam) cntlm und starte es neu.
quelle
Ich war damit auf mehrere Probleme gestoßen, und schließlich habe ich Folgendes getan:
In fiddler benutzerdefinierten Regeln habe ich hinzugefügt
Schließlich habe ich in npm den Proxy auf http: // localhost: 8888 gesetzt
Das hat gut funktioniert.
quelle
"domain\\username:password"
eine Sicherheitsbedrohung für Identitätsdiebstahl darstellen kann. Stattdessen"(default)"
funktionierte die Verwendung der Konfiguration in den benutzerdefinierten Regeln auf charmante Weise. Fiddler muss ausgeführt werden, während Sie "npm" verwenden, damit dies funktioniert.Für alle, die hinter einer Unternehmensfirewall zu kämpfen haben, sowie für Probleme mit SSL (kein lokales Ausstellerzertifikat kann nicht abgerufen werden), können Sie folgende Schritte ausführen:
Vergessen Sie SSL
Wenn Sie sich keine Sorgen um SSL machen, können Sie den Ratschlägen vieler früherer Mitwirkender folgen, indem Sie Ihre Proxys festlegen und die Registrierung auf die nicht sichere Version ändern:
Ein kurzes "Gotcha" hier, meine Proxy-Anmeldeinformationen sind für gesicherte und nicht gesicherte Anfragen gleich (beachten Sie, wie ich mein Protokoll als http: // für den https-Proxy verlassen habe Konfiguration verlassen habe). Dies kann für Sie dasselbe sein und möglicherweise nicht.
Ich möchte SSL behalten
Wenn Sie SSL behalten und nicht verwenden möchten
strict-ssl=false
, haben Sie mehr Arbeit zu erledigen. Ich bin hinter einer Unternehmensfirewall und wir verwenden selbstsignierte Zertifikate, sodass ich den Fehler erhalteunable to get local issuer certificate
. Wenn Sie sich im selben Boot wie ich befinden, müssen Sie diecafile=
Option in der Konfigurationsdatei npm festlegen. Zunächst müssen Sie eine PEM-Datei erstellen, die Informationen zu Ihren selbstsignierten Zertifikaten enthält. Wenn Sie nicht wissen, wie das geht, finden Sie hier Anweisungen für eine Windows-Umgebung ohne Verwendung von Software von Drittanbietern:Wir müssen explizit angeben, welchen Zertifikaten vertraut werden soll, da wir selbstsignierende Zertifikate verwenden. In meinem Beispiel habe ich mit Chrome zu www.google.com navigiert, um die Zertifikate abzurufen.
Gehen Sie in Chrome zu Inspizieren -> Sicherheit -> Zertifikat anzeigen. Sie sehen alle Zertifikate, die die SSL-Verbindung zulassen. Beachten Sie, wie diese Zertifikate selbst signiert sind. Der verschwommene Teil ist meine Firma, und wir sind keine zertifizierte Behörde. Sie können den vollständigen Zertifikatpfad als P7B-Datei exportieren oder die Zertifikate einzeln als CER-Dateien exportieren (Base64-Codierung). Das Exportieren des vollständigen Pfads als P7B bringt Ihnen nicht viel, da Sie diese Datei wiederum in einem Zertifikatmanager öffnen und trotzdem als einzelne CER-Dateien exportieren müssen. Unter Windows wird durch Doppelklicken auf die P7B-Datei die Zertifikatmanager-Anwendung geöffnet.
Das Exportieren als CER (Base 64) ist eine Textdatei im folgenden Format:
Um unsere PEM-Datei zu erstellen, müssen wir diese Zertifikate einfach übereinander in eine einzelne Datei stapeln und die Erweiterung in .pem ändern. Ich habe dazu den Notizblock verwendet.
Sie stapeln die Zertifikate in umgekehrter Reihenfolge aus dem Zertifikatpfad. Oben würde ich mit * .google.com beginnen und dann Websense darunter einfügen, dann CA 1 usw. ausgeben. Auf diese Weise werden die Zertifikate von oben nach unten analysiert, um nach der entsprechenden Stammzertifizierungsstelle zu suchen. Das einfache Einschließen der Stammzertifizierungsstelle funktioniert nicht, aber wir müssen auch nicht alle Zertifikate einschließen. Aus dem obigen Pfad muss ich nur die Zertifikate einschließen, die vor dem Websense-Zertifikat stehen (ausstellende Zertifizierungsstelle 1, Richtlinienzertifizierungsstelle, Stammzertifizierungsstelle).
Sobald diese selbstsignierten Zertifikate in einer PEM-Datei gespeichert sind, können wir npm anweisen, diese Zertifikate als vertrauenswürdige Zertifizierungsstelle zu verwenden. Stellen Sie einfach die Konfigurationsdatei ein und Sie sollten bereit sein:
Wenn Ihre Proxys festgelegt sind (http und https) und die Registrierung festgelegt ist
https://registry.npmjs.org
, sollten Sie nun in der Lage sein, Pakete hinter einer Unternehmensfirewall mit selbstsignierten Zertifikaten zu installieren, ohne diestrict-ssl
Einstellung zu ändern .quelle
Sie können Fiddler überprüfen, wenn NPM einen Authentifizierungsfehler ausgibt. Es ist einfach zu installieren und zu konfigurieren. Setzen Sie die Fiddler-Regel auf Automatisch authentifiziert. In .npmrc legen Sie diese Eigenschaften fest
Es hat bei mir funktioniert :)
quelle
Versuchen Sie Folgendes: Stellen Sie den Proxy wie folgt in npm ein
quelle
Sie erhalten den Proxy-Host und -Port von Ihrem Serveradministrator oder Support.
Danach einrichten
Wenn das Passwort ein Sonderzeichen enthält, versuchen Sie es mit% urlencode. ZB: - Pfund (Hash) sollte durch% 23 ersetzt werden.
Das hat bei mir funktioniert ...
quelle
Erstellen Sie einfach eine Datei mit dem Namen .npmrc-Datei in einem Projektordner. Dadurch wird die Proxy-Einstellung auf Systemebene vermieden
Kommentieren Sie so, wenn Sie den Proxy nicht verwenden
quelle
Keine der vorhandenen Antworten erklärt, wie npm mit einer PAC-Datei verwendet wird. Einige schlagen vor, die PAC-Datei herunterzuladen, manuell zu überprüfen und eine der Zeichenfolgen "PROXY ..." auszuwählen. Dies funktioniert jedoch nicht, wenn die PAC-Datei aus mehreren Proxys auswählen muss oder wenn die PAC-Datei eine komplexe Logik zum Umgehen von Proxys für bestimmte URLs enthält.
Einige Unternehmensproxys erfordern außerdem eine NTLM-Authentifizierung. CNTLM kann die Authentifizierung verarbeiten, unterstützt jedoch keine PAC-Dateien.
Eine Alternative ist die Verwendung von Alpaca , das die PAC-Datei in einer JavaScript-VM ausführt und die NTLM-Authentifizierung mit dem resultierenden Proxy durchführt.
quelle
Wenn Sie sich hinter einem Unternehmensnetzwerk mit Proxy befinden, habe ich nur ein ntlm-Proxy-Tool verwendet und den von ntlm bereitgestellten Port und Proxy verwendet. Zum Beispiel habe ich diese Konfiguration verwendet:
Ich hoffe das hilft.
quelle
Verwenden Sie den folgenden Befehl bei cmd oder GIT Bash oder einer anderen Eingabeaufforderung
Dabei ist 192.168.1.101 die Proxy-IP und 4128 der Port. Ändern Sie entsprechend Ihren Proxy-Einstellungen.
quelle
Sie müssen "npm config set http-proxy" verwenden " verwenden.
verwenden:
quelle
Bei der Arbeit verwenden wir ZScaler als Proxy. Die einzige Möglichkeit, npm zum Arbeiten zu bringen, war die Verwendung von Cntlm .
Siehe diese Antwort:
NPM hinter NTLM-Proxy
quelle
Versuchen Sie dies, es war das einzige, das für mich funktioniert hat:
npm --proxy http: //: @proxyhost: --https-proxy http: //: @proxyhost: --strict-ssl false install -g package
Achten Sie auf die Option --strict-ssl false
Viel Glück.
quelle
Das in der akzeptierten Antwort erwähnte NPM- Proxy-Setup löst das Problem. Wie Sie jedoch in diesem npm-Problem sehen können , verwenden einige Abhängigkeiten GIT. Daher ist das Git-Proxy-Setup erforderlich und kann wie folgt durchgeführt werden:
Das erwähnte NPM-Proxy-Setup:
quelle
Ich hatte ein ähnliches Problem und habe alle oben genannten Problemumgehungen ausprobiert, aber keine davon hat bei mir funktioniert (ich habe in meinem Passwort Sonderzeichen (wie das Symbol '@') verwendet und musste auch einen Domainnamen hinzufügen).
Abgesehen davon war ich etwas besorgt, mein Passwort als Klartext hinzuzufügen. Es stellte sich heraus, dass die einfachste Lösung zur Bewältigung all dieser Herausforderungen darin bestand, eine Art Reverse-Proxy (wie Fiddler) zu verwenden.
Ich habe die Konfigurationsschritte in dieser Antwort bereits in SO detailliert beschrieben .
quelle
Das Hinzufügen der folgenden Zeilen in der .typingsrc-Datei hat mir geholfen.
quelle
Ich bin auf ein ähnliches Problem gestoßen und habe festgestellt, dass meine npm-Konfigurationsdatei (.npmrc) einen falschen Registrierungseintrag enthält. hat es auskommentiert und npm install erneut ausgeführt. es funktionierte.
quelle
Betriebssystem: Windows 7
Schritte, die für mich funktioniert haben:
npm config get proxy
npm config get https-proxy
Kommentare: Ich habe diesen Befehl ausgeführt, um meine Proxy-Einstellungen zu kennen
npm config rm proxy
npm config rm https-proxy
npm config set registry=http://registry.npmjs.org/
npm install
quelle
Da ich immer noch Probleme habe, Proxy-Einstellungen bei der Arbeit festzulegen und zu Hause auszuschalten, habe ich npm-corpo-proxy.sh per Skript erstellt und veröffentlicht . In jedem Unternehmen muss das Passwort häufig geändert werden und spezielle Zeichen enthalten, die vor dem Einspeisen der npm-Konfiguration codiert werden müssen (dasselbe gilt für das Backash-Formular domain \ user).
quelle
Nach einer kleinen Suche auf Google habe ich als erstes Folgendes versucht
Trotzdem schien npm die Verbindung zu verlieren, wenn versucht wurde, "npm install" durchzuführen. dann habe ich diese Zeile in der Eingabeaufforderung ausgeführt und jetzt kann ich npm install verwenden
quelle
Ich konnte es mit dem CNTLM nicht zum Laufen bringen. Ich habe versucht, alle oben angegebenen Informationen zu befolgen, aber der Proxy hat die Verbindung immer noch nicht autorisiert. Bei Fiddler müssen Sie es nur installieren und die Option Automatisch authentifiziert aktivieren. Aber um zu arbeiten, musste ich die .npmrc-Datei aus meinem Benutzerordner entfernen und die hier angegebenen Umgebungsvariablen mit den folgenden Werten festlegen:
quelle