Verwenden von npm hinter dem Corporate Proxy .pac

157

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

Doc
quelle
8
Ich denke nicht, dass diese Frage ein Duplikat ist, Pac-Skripte können abhängig von der Ziel-IP / Host-Adresse mehrere Proxy-Adressen enthalten, während der Dube nur 1 Proxy-Adresse adressiert - Aus Überprüfung
Ferrybig
1
Keine einzige Antwort gibt an, wie Pac-Skripte verwendet werden sollen, die abhängig von der Ziel-IP- / Host-Adresse mehrere Proxy-Adressen enthalten können. Kann mir bitte jemand helfen.
Partha Sarathi Ghosh
2
Für mich hat es geholfen, die proxy.pacDatei zu öffnen , um die Proxy-Adresse daraus zu erhalten. (In meinem Fall musste ich einfach den Port auf 8080 umstellen).
Nomade
@ParthaSarathiGhosh Sie haben Recht, keine der Antworten hat tatsächlich erklärt, wie PAC-Skripte verwendet werden . Daher habe ich eine weitere Antwort hinzugefügt, die dies behebt : stackoverflow.com/a/61811444 . Es ist ein paar Jahre zu spät, aber besser spät als nie?
user1031921

Antworten:

204

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:

npm config set proxy "http://domain\username:password@servername:port/"

Wenn Sie dies npm config get proxyausfü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:

npm config set proxy "http://domain%5Cusername:password@servername:port/"

und damit wurde der Proxy-Zugriff behoben.

Steve Roberts
quelle
5
seine Ursache Ihre fehlt die% 5C .key Teil der C sein .... sehe ich es für ya gestaffelt
sinisterrook
1
Ich habe gerade einige Dinge aktualisiert und mein Proxy funktioniert nicht mehr. Es stellte sich heraus, dass in der "Proxy" -Einstellung der .npmrc-Datei (wie unten von @Ovidiu Buligan erwähnt)% 5C für den Backslash enthalten war, der "https-Proxy" jedoch nur das "\". Wenn Sie dies ebenfalls auf% 5C ändern, wurde das Problem behoben. Ich gehe
Steve Roberts
1
Ich versuche, npm hinter dem Proxy zu konfigurieren, aber es gibt eine Möglichkeit, mithilfe der npm-Konfiguration einen "Ping" durchzuführen. Denn wenn meine Conf falsch ist, wird mein Benutzer in meiner Unternehmensdomain blockiert.
Ricardo
3
Was für mich funktioniert hat, ist zu LÖSCHEN die verdammten Umgebungsvariablen . Verwenden Sie set HTTP_PROXY = und set HTTPS_PROXY =
Sydwell
4
Hinzufügen strict-ssl=falsezu der .npmrcfür mich gelösten Konfigurationsdatei hinter einem Unternehmens-Proxy - siehe Antworten von @ ovidiu-buligan und @ karthikeyan-a
Alexander McFarlane
64

Suchen Sie in den LAN- pacEinstellungen 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

proxy=http://<username>:<pass>@proxyhost:<port>
https-proxy=http://<uname>:<pass>@proxyhost:<port>

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.

Ovidiu Buligan
quelle
Vielen Dank. Ich navigierte zu .npmrc und änderte die Einstellungen. es hat funktioniert
arn-arn
53

Laden Sie Ihre .pacDatei herunter . Öffnen Sie es in einem beliebigen Editor und suchen Sie nach PROXY = "PROXY X.X.X.X:80;. Sie können viele Proxys haben, einen davon kopieren und die folgenden Terminalbefehle ausführen:

npm config set proxy http://X.X.X.X:80
npm config set https-proxy http://X.X.X.X:80

Jetzt sollten Sie in der Lage sein, jedes Paket zu installieren!

Sumeet_Pol
quelle
1
Für den https-Proxy-Teil musste ich "... set https-proxy = http: // ..." anstelle von "... set https-proxy http: // ..." ausführen Arbeit. Nur meine $ .02.
Nick
Dank der Einstellung von https-proxy auf http: // hat nur funktioniert. nachdem ich die Umgebungsvariablen http_proxy und https_proxy von bash!
Alex Punnen
Für https-Proxy konnte ich nicht "https-Proxy https: /.../ setzen" setzen, sondern "https-Proxy http: // ... setzen" (Proxy-Informationen von https -> http)
Mars
Gleiches gilt auch für Git,git config --global http.proxy http://X.X.X.X:80 git config --global https.proxy http://X.X.X.X:80
Codename Jack
37

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>

KARTHIKEYAN.A
quelle
2
Nur um darauf hinzuweisen, dass das Setzen von strikt-ssl von npm auf false ein Sicherheitsproblem ist. Ziehen Sie stattdessen in Betracht, die ca[]Eigenschaft auf npm ordnungsgemäß einzurichten .
Aaron C
26

Um @Steve Roberts Antwort zu erweitern.

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:

npm config set proxy "http://domain\username:password@servername:port/"

Ich musste meine domain\userZeichenfolge 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

// option one 
// it works for some packages
npm config set http_proxy "http://DOMAIN%5Cuser+name:[email protected]:port"
npm config set proxy "http://DOMAIN%5Cuser+name:[email protected]:port"

// option two
// it works best for me
// please notice that I actually used a space 
// instead of URL encode it with '+', '%20 ' OR %2B (plus url encoded)
npm config set http_proxy "http://DOMAIN%5Cuser name:[email protected]:port"
npm config set proxy "http://DOMAIN%5Cuser name:[email protected]:port"

// option two (B) as of 2019-06-01
// no DOMAIN
// instead of URL encode it with '+', '%20 ' OR %2B (plus url encoded)
npm config set http_proxy "http://user name:[email protected]:port"
npm config set proxy "http://user name:[email protected]:port"

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:

  1. Ist ein DOMAIN Zeichenfolge für die Authentifizierung erforderlich
  2. Müssen Sie Sonderzeichen codieren?
    • Leerzeichen und (@) Zeichen sind besonders herausfordernd

Grüß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:

rem notice that the value after the = has no quotations
rem    - I believe that if quotations are placed after it, they become
rem    part of the value, you do not want that
rem notice that there is no space before or after the = sign
rem     - if you leave a space before it, you will be declaring a variable 
rem     name that includes such space, you do not want to do that
rem     - if you leave a space after it, you will be including the space
rem     as part of the value, you do not want that either
rem looks like there is no need to URL encode stuff in there
SET HTTP_PROXY=http://DOMAIN\user name:[email protected]:port
SET HTTPS_PROXY=http://DOMAIN\user name:[email protected]:port

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:

  • Laube
  • Landstreicher
    • virtuelle Box (unter Linux)
    • apt-get [Linux]
  • git
  • vscode
  • Klammern
  • Atom
  • tsd

cntlm Setup-Schritte

Also habe ich cntlm installiert . Die Einstellung cntlmist ziemlich schwierig, Sie suchen nach der INI-Datei @C:\Program Files\Cntlm\cntlm.ini

  1. Öffnen C:\Program Files\Cntlm\cntlm.ini(möglicherweise benötigen Sie Administratorrechte)
  2. Suche nach Usernameund DomainZeilen (Zeile 8-9 denke ich)
    • Fügen Sie Ihren Benutzernamen hinzu
    • Fügen Sie Ihre Domain hinzu
  3. Auf cmd Eingabeaufforderung ausführen:

    cd C:\Program Files\Cntlm\
    cntlm -M
    cntlm -H  
    • Sie werden nach dem Passwort gefragt:
     cygwin warning:
       MS-DOS style path detected: C:\Program Files\Cntlm\cntlm.ini
       Preferred POSIX equivalent is: /Cntlm/cntlm.ini
       CYGWIN environment variable option "nodosfilewarning" turns off this warning.
       Consult the user's guide for more details about POSIX paths:
         http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
     Password:
  4. Die Ausgabe, die Sie erhalten cntlm -H, sieht ungefähr so ​​aus:

    PassLM          561DF6AF15D5A5ADG  
    PassNT          A1D651A5F15DFA5AD  
    PassNTLMv2      A1D65F1A65D1ASD51  # Only for user 'user name', domain 'DOMAIN'
    • Es wird empfohlen, PassNTLMv2 zu verwenden. Fügen Sie daher eine #Vorher-Zeile hinzu PassLMund PassNTverwenden Sie sie nicht
  5. Fügen Sie die Ausgabe von ein cntlm -H in die INI-Datei ein und ersetzen Sie die Zeilen für PassLM, PassNTund PassNTMLv2oder kommentieren Sie die ursprünglichen Zeilen und fügen Sie Ihre hinzu.
  6. Fügen Sie Ihre ProxyServer 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 dem AutoConfigURLRegistrierungsschlü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.
  7. Optional können Sie den Port ändern, an dem cntlm lauscht, indem Sie den ändern 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- localhostAdresse und den Standardport für cntlm verwenden, 3128damit meine Proxy-URL so aussieht

http://localhost:3128

Mit dem richtigen Befehl:

npm config set proxy http: // localhost: 3128

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 npm config set strict-ssl false (großes Nein-Nein).

Grundlagen

  1. Holen Sie sich das Zertifikat von Ihrem Browser (Chromes funktioniert gut). Exportieren Sie es als Base-64-codiertes X.509 (.CER)
  2. Ersetzen Sie neue Zeilen durch \n
  3. Bearbeiten Sie Ihre .npmrcZeile 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.

Aaron C.
quelle
7

Ich war damit auf mehrere Probleme gestoßen, und schließlich habe ich Folgendes getan:

  1. Verwendeter Geiger mit der Option "Automatisch authentifizieren" ausgewählt
  2. In fiddler benutzerdefinierten Regeln habe ich hinzugefügt

    if (m_AutoAuth) {oSession["X-AutoAuth"] = "domain\\username:password";}
  3. Schließlich habe ich in npm den Proxy auf http: // localhost: 8888 gesetzt

Das hat gut funktioniert.

Schuh Palli
quelle
Vielen Dank! Lief wie am Schnürchen!! Mein Szenario: Der Benutzername hatte das Format "Domain / Benutzername". Das Passwort hatte ein "@". Musste überhaupt keine URL-Codierung / -Decodierung usw. durchführen
A_B
Hat perfekt für mich funktioniert. Ich danke dir sehr. Ich wollte nur darauf hinweisen, dass die Verwendung "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.
pk10
7

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:

npm config set proxy http://username:password@proxyname:port
npm config set https-proxy http://username:password@proxyname:port
npm config set registry http://registry.npmjs.org/

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 erhalte unable to get local issuer certificate. Wenn Sie sich im selben Boot wie ich befinden, müssen Sie die cafile=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.

Geben Sie hier die Bildbeschreibung ein

Das Exportieren als CER (Base 64) ist eine Textdatei im folgenden Format:

-----BEGIN CERTIFICATE-----
MIIGqzCCBZOgAwIBAgITIwAAABWhFPjwukYhTAADAAAAFTANBgkqhkiG9w0BAQUF
ADBFMRMwEQYKCZImiZPyLGQBGRYDY29tMRYwFAYKCZImiZPyLGQBGRYGaXJ2aW5n
b0pvCkNmjWzaNNUg2hYET+pP5nP75aRu+kPRl9UnlQ....rest of certificate...
-----END CERTIFICATE-----

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:

npm config set cafile "C:\yourcerts.pem"

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 die strict-sslEinstellung zu ändern .

John Galt
quelle
6

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

registry=http://registry.npmjs.org
proxy=http://127.0.0.1:8888
https-proxy=http://127.0.0.1:8888
http-proxy=http://127.0.0.1:8888
strict-ssl=false

Es hat bei mir funktioniert :)

Rakesh Sharma
quelle
überraschenderweise funktionierte keine der Konfigurationen, die ich für meinen Proxy verwendet habe, ich habe diese und Open Fiddler verwendet und ich konnte sie gut verwenden ...
Roberto
5

Versuchen Sie Folgendes: Stellen Sie den Proxy wie folgt in npm ein

npm config set proxy "http://<user-name>:<password>@<proxy-url>:<port>"
npm config set https-proxy "http://<user-name>:<password>@<proxy-url>:<port>"
npm config set strict-ssl false
npm config set registry "http://registry.npmjs.org/"
Mohammed Safeer
quelle
4

Sie erhalten den Proxy-Host und -Port von Ihrem Serveradministrator oder Support.

Danach einrichten

npm config set http_proxy http://username:[email protected]:itsport
npm config set proxy http://username:[email protected]:itsport

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 ...

Schamseer
quelle
3

Erstellen Sie einfach eine Datei mit dem Namen .npmrc-Datei in einem Projektordner. Dadurch wird die Proxy-Einstellung auf Systemebene vermieden

#Without password
proxy=http://ipaddress:80
https-proxy=http://ipaddress:80

#With password
proxy=http://<username>:<pass>@proxyhost:<port>
https-proxy=http://<uname>:<pass>@proxyhost:<port>

Kommentieren Sie so, wenn Sie den Proxy nicht verwenden

#proxy=http://ipaddress:80
#https-proxy=http://ipaddress:80

#With password
#proxy=http://<username>:<pass>@proxyhost:<port>
#https-proxy=http://<uname>:<pass>@proxyhost:<port>
Vinayak Shedgeri
quelle
3

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.

user1031921
quelle
2

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:

strict-ssl=false
proxy=http://localhost:3125

Ich hoffe das hilft.

yunieski dieguez garcia
quelle
2

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.

Pankaj
quelle
2

Sie müssen "npm config set http-proxy" verwenden " verwenden.

verwenden:

npm config set http-proxy http://1.2.3.4:8181
npm config set https-proxy http://1.2.3.4:8181
Júnior Mendonça
quelle
1

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

Bruceceng
quelle
1

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.

Matías Dell'Oso
quelle
1

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:

git config --global http.proxy http://username:password@host:port
git config --global https.proxy http://username:password@host:port

Das erwähnte NPM-Proxy-Setup:

npm config set proxy "http://username:password@host:port"
npm config set https-proxy "http://username:password@host:port"
npm config set strict-ssl false
npm config set registry "http://registry.npmjs.org/"
Josiel Faleiros
quelle
0

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 .

Karthik
quelle
0

Das Hinzufügen der folgenden Zeilen in der .typingsrc-Datei hat mir geholfen.

{
    "rejectUnauthorized": false,
    "registryURL" :"http://api.typings.org/"
 }
Tapas Ranjan Singh
quelle
0

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.

Ravi Siva Prasad M.
quelle
0

Betriebssystem: Windows 7

Schritte, die für mich funktioniert haben:

  1. npm config get proxy
  2. npm config get https-proxy

  3. Kommentare: Ich habe diesen Befehl ausgeführt, um meine Proxy-Einstellungen zu kennen
    npm config rm proxy

  4. npm config rm https-proxy
  5. npm config set registry=http://registry.npmjs.org/
  6. npm install
Suchi Dvg
quelle
0

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).

Maciek Leks
quelle
0

Nach einer kleinen Suche auf Google habe ich als erstes Folgendes versucht

npm config set registry http://registry.npmjs.org/
npm config set proxy "your proxy"
npm config set https-proxy "your proxy"

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

set NODE_TLS_REJECT_UNAUTHORIZED=0
Barkin Kaplan
quelle
0

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:

set npm_config_https-proxy="http://127.0.0.1:8888"

set npm_config_registry="http://registry.npmjs.org/"
Guilherme Pereira
quelle