Wie installiere ich NPM hinter dem Authentifizierungs-Proxy unter Windows?

134167
Tobias

Ich muss die neueste Version von Node und NPM unter Windows ausführen. Ich habe Node 0.5.8 installiert und die Quellen von NPM von GitHub heruntergeladen. Die Schritte, die ich zur Installation von NPM befolgt habe, wurden auf der GitHub-Site aufgelistet. Ich habe jedoch Probleme beim Ausführen des folgenden Befehls:

node cli.js install npm -gf 

Es schlägt jedoch mit der folgenden Fehlermeldung fehl:

Error: connect UNKNOWN at errnoException (net_uv.js:566:11) at Object.afterConnect [as oncomplete] (net_uv.js:557:18)  System Windows_NT 5.1.2600 command "...\\Node\\bin\\node.exe" "...\\npm\\cli.js" "install" "npm" "-gf" cwd ...\npm node -v v0.5.8 npm -v 1.0.94 code UNKNOWN 

Ich denke, dass dies ein Problem ist, weil ich eine Authentifizierung an meinem Proxy benötige, um eine Verbindung zum Internet herzustellen. Ich fand jedoch keine Möglichkeit, dem Installer mitzuteilen, dass er meine Anmeldeinformationen für die Anmeldung verwenden soll. Gibt es eine Möglichkeit, meine Proxy-IP- und Login-Informationen für die npm-Installation bereitzustellen, möglicherweise über Befehlszeilenargumente?

Ich kann das vollständige Protokoll bereitstellen (scheint jedoch keine relevanteren Informationen zu haben), wenn nötig mit Pastebin.

29
Ein kleiner Trick, wenn der Benutzername die Domäne \ Benutzername enthält, ersetzen Sie den umgekehrten Schrägstrich durch den http-Escape-Code (% 5C). vor 11 Jahren 6
@layos Vielen Dank. Wenn das reddit wäre, würde ich dir Gold geben. Korinna vor 10 Jahren 0

14 Antworten auf die Frage

38
Eric Steinborn

set http_proxyfunktionierte wirklich gut für mich, aber ich musste es jedes Mal eingeben, wenn ich die Eingabeaufforderung öffnete. Also musste ich mehrere Antworten kombinieren und jetzt ist meine dauerhaft.

Meine Sequenz lief wie folgt ab:

  • Gehe zu C:\Users\YourUserName
  • Erstellen Sie eine Datei mit dem Namen .npmrc
  • In dieser Datei geben Sie Folgendes ein (wenn Sie sich in einer AD-Domäne befinden):

proxy = http://domain\\username:password@ip:port

  • Oder verwenden Sie dies, wenn Sie sich NICHT in einer AD-Domäne befinden:

proxy = http://username:password@ip:port

  • Speicher die Datei
  • Öffnen Sie eine Eingabeaufforderung und versuchen Sie es zu verwenden npm

Andere hatten zusätzlichen Erfolg mit dem folgenden zusätzlichen Befehl:

strict-ssl = false

* Sie sollten anstelle von "IP" eine IP-Adresse oder die URL zum Proxy verwenden können.

Ihre Proxy-Zeichenfolge muss möglicherweise etwas angepasst werden, aber dies hat dazu geführt, dass ich dies nicht jedes Mal hinzufügen musste.

Prost

Wenn Ihr Passwort "@" enthält, wird die Proxy-Einstellung nicht korrekt von npm analysiert. Eine mögliche Problemumgehung besteht darin, ein falsches Benutzername: Kennwort in die NPM-Konfiguration einzufügen und den Proxy-Authorization-Header der Anforderung mit einem lokalen Proxy (z. B. Fiddler) so zu ändern, dass der korrekte Benutzername: Kennwort angezeigt wird. Beachten Sie, dass der in Proxy-Authorization gespeicherte Benutzername: Kennwort Base64-codiert ist. BStruthers vor 10 Jahren 3
Ich habe mit mir zu arbeiten: `proxy = http: // ip: port / https-proxy = http: // ip: port / registry = http://registry.npmjs.org/ strict-ssl = false` Luke vor 10 Jahren 9
Ich habe meine nicht mit Benutzername: Passwort arbeiten lassen philx_x vor 8 Jahren 1
Hey, ich habe versucht, "domain \\ user: password @ urltoproxy: port" zu verwenden. Wenn ich jedoch "npm install" betreibe, ändert sich die Option in "domain / user: password @ urltoproxy: port". Wie kann ich das umgehen? Jacob Schneider vor 5 Jahren 0
10
nafisto

Das Festlegen einer Umgebungsvariablen funktioniert möglicherweise für Sie:

set HTTP_PROXY=http://user:pass@server.url:port 

(In meinem Fall löst dies den "connect UNKNOWN" - Fehler, es wird jedoch ein völlig anderer "Socket-Hang-Up" -Fehler angezeigt. Ich habe auch versucht, die Umgebungsvariable HTTPS_PROXY zu setzen, erhielt jedoch das gleiche Ergebnis.)

Ich habe versucht, die Umgebungsvariable festzulegen, und habe auch versucht, --proxy http: // user: pass@server.url: port für den Befehl zu übergeben, aber jetzt bekomme ich immer ECONNREFUSED. Muss ich meine AD-Domäne für die Proxy-Anmeldung angeben? Tobias vor 12 Jahren 0
Lief wie am Schnürchen. Vielen Dank! x97mdr vor 11 Jahren 0
@Tobias versuche `setze HTTP_PROXY = http: // Domäne \ Benutzer: Pass@server.url: Port` Adam Grant vor 10 Jahren 0
8
sam

Ich hatte dieses identische Problem und hier habe ich getan, um diese Arbeit zu machen:

  • Gehe zu: C:\Users\YourUserName
  • Erstellen Sie eine Datei mit dem Namen .npmrc
  • Und der Eintrag lautet:

    registry = http://registry.npmjs.org 
  • Versuchen Sie den Befehl node cli.js install npm -gferneut.

Ich habe die Datei mit dem von Ihnen erwähnten Inhalt erstellt, bekomme aber immer noch den Connect UNKNOWN-Fehler :( Tobias vor 12 Jahren 0
Prost für das. Habe eine "npm config set Registry http://registry.npmjs.org" gemacht, um das https: // zu umgehen, und alles ist gut in meinem Windows-Setup. Gavin Gilmour vor 12 Jahren 0
Wenn jemand die ETIMEOUT-Nachricht erhält, fügen Sie die Proxy-Einstellung mit dem Knotenkonfigurations-Proxy http: // Benutzername: Kennwort @ Server: Port hinzu Jeremy S. vor 11 Jahren 1
Was für mich funktionierte, war das Erstellen der `~ / .npmrc`-Datei wie oben, die npm anweist, die` http: // `-Registrierung anstelle von` https: // `zu verwenden, und dann meine` http_proxy`-Umgebungsvariable auf `setzen http: // myusername: mypassword@proxy.company.com: 1234` Maxy-B vor 11 Jahren 0
Wenn Ihr Passwort "@" enthält, wird die Proxy-Einstellung nicht korrekt von npm analysiert. Eine mögliche Problemumgehung besteht darin, ein falsches Benutzername: Kennwort in die NPM-Konfiguration einzufügen und den Proxy-Authorization-Header der Anforderung mit einem lokalen Proxy (z. B. Fiddler) so zu ändern, dass der korrekte Benutzername: Kennwort angezeigt wird. Beachten Sie, dass der in Proxy-Authorization gespeicherte Benutzername: Kennwort Base64-codiert ist. BStruthers vor 10 Jahren 0
In meinem Fall wurde die Registrierung von "https: //" auf "http: //" umgestellt Neps vor 6 Jahren 0
4
rob

Nach einigen Recherchen könnte ich es so verwenden:

  1. Installieren Sie den NTLM Authorization Proxy Server oder einen anderen Proxyserver für NTLM wie Cntlm. Ich persönlich bevorzuge den Python-Server, weil ich damit basteln kann und die Leistung kein Problem darstellt.

  2. Richten Sie die Konfiguration ein. Beachten Sie, dass ich in meinem Fall sowohl den LM- als auch den NT-Modus aktivieren musste, und ich würde vermuten, dass dies heutzutage der Normalfall ist.

  3. Legen Sie die Umgebungsvariable http_proxy und https_proxy so fest, dass sie auf Ihren lokalen Proxy verweist:

    set http_proxy = "localhost: 5865"
    set https_proxy = "localhost: 5865"

  4. npm sollte jetzt funktionieren, natürlich sollte es von einer Shell aus ausgeführt werden, in der die obigen Umgebungsvariablen definiert sind.

3
Chummar

Folgendes hat für mich gearbeitet.

Unter Windows 7:

npm config set proxy xxhttp://username:password@proxyhost:port# 

Dadurch sollte eine Datei erstellt werden, die .npmrcim C:/users/<username>Ordner benannt ist.

3
Super Luvdub

Geben Sie dies in die Befehlszeile ein:

npm set proxy http://user:pass@ip:port

npm set https-proxy http://user:pass@ip:port

VERGESSEN SIE NICHT, HTTP: // vor Ihrem Benutzernamen mit einzuschließen . Es hat für mich funktioniert.

2
John

Dieses Problem wurde für mich behoben, nachdem die .npmrc- Datei wie oben beschrieben erstellt und anschließend der Befehl adduser ausgeführt und folgende Eingabeaufforderungen von cmd ausgeführt wurden.

npm adduser 

Führen Sie den folgenden Befehl aus, um zu überprüfen, ob Sie über einen autorisierten Benutzernamen verfügen:

npm whoami 
2
nilleb

Each one of the above answers needs the user to write her password in a text file, or in an environ ment variable.

Personally I didn't like a solution like these, for their insecure approach. So I tried to write an application which injects the Kerberos token of the current user in the exchanges between the client (npm, bower, git) and the proxy. That said, Active Directory is just a proprietary implementation of Kerberos.

I use this software everyday, on a Windows 8.1 host. You can find the code (golang) and the first release binaries on https://github.com/nilleb/authentication-proxy.

1
catrapture

Alle drei Dinge funktionierten für mich in .npmrc

proxy = http://unam:pwd@host:port https-proxy = http://unam:pwd@host:port registry = http://registry.npmjs.org 
1
Ganesh

Zumindest unter Windows funktioniert es bei mir mit folgender Einstellung:

Proxy = http: // Domäne % 5C Benutzername : Kennwort @ Proxy_IP : Port

dh (1) Verwenden Sie %5Canstelle von \(wie anderswo vorgeschlagen) und (2) verwenden Sie die IP-Adresse anstelle des lokalen Rechnernamens für den Proxyserver.

Das ist richtig - die Domain + Benutzername und das Passwort müssen separat URL-kodiert sein. Wenn Sie beispielsweise # in Ihrem Kennwort haben, ersetzen Sie es durch% 23 saille vor 8 Jahren 0