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\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
// option one
// it works for some packages
npm config set http_proxy "http://DOMAIN%5Cuser+name:password@x.x.x.x:port"
npm config set proxy "http://DOMAIN%5Cuser+name:password@x.x.x.x: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:password@x.x.x.x:port"
npm config set proxy "http://DOMAIN%5Cuser name:password@x.x.x.x: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:password@x.x.x.x:port"
npm config set proxy "http://user name:password@x.x.x.x: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:
- Ist ein
DOMAIN
Zeichenfolge für die Authentifizierung erforderlich
- 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:password@x.x.x.x:port
SET HTTPS_PROXY=http://DOMAIN\user name:password@x.x.x.x: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 cntlm
ist ziemlich schwierig, Sie suchen nach der INI-Datei @C:\Program Files\Cntlm\cntlm.ini
- Öffnen
C:\Program Files\Cntlm\cntlm.ini
(möglicherweise benötigen Sie Administratorrechte)
- Suche nach
Username
und Domain
Zeilen (Zeile 8-9 denke ich)
- Fügen Sie Ihren Benutzernamen hinzu
- Fügen Sie Ihre Domain hinzu
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:
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 PassLM
und PassNT
verwenden Sie sie nicht
- Fügen Sie die Ausgabe von ein
cntlm -H
in die INI-Datei ein und ersetzen Sie die Zeilen für PassLM
, PassNT
und PassNTMLv2
oder kommentieren Sie die ursprünglichen Zeilen und fügen Sie Ihre hinzu.
- Fügen Sie Ihre
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 dem AutoConfigURL
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.
- 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- localhost
Adresse und den Standardport für cntlm verwenden, 3128
damit 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
- Holen Sie sich das Zertifikat von Ihrem Browser (Chromes funktioniert gut). Exportieren Sie es als Base-64-codiertes X.509 (.CER)
- Ersetzen Sie neue Zeilen durch
\n
- Bearbeiten Sie Ihre
.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.