2011-10-17 13:25:58 +0000 2011-10-17 13:25:58 +0000
30
30

Jak zainstalować NPM za proxy uwierzytelniającym na Windows?

Muszę uruchomić najnowszą wersję Node i NPM w systemie Windows. Zainstalowałem Node 0.5.8 i pobrałem źródła NPM z GitHub. Kroki, które wykonałem, aby zainstalować NPM, zostały wymienione na jego stronie GitHub, ale mam problem z uruchomieniem następującego polecenia:

node cli.js install npm -gf

ale kończy się niepowodzeniem z następującym komunikatem o błędzie:

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

Myślę, że jest to problem, ponieważ potrzebuję uwierzytelnienia na moim proxy, aby połączyć się z Internetem. Ale nie znalazłem sposobu, aby powiedzieć instalatorowi, aby używał moich danych uwierzytelniających do logowania. Czy istnieje możliwość przekazania mojego IP proxy i informacji o logowaniu do instalacji npm może poprzez argumenty wiersza poleceń?

Mogę dostarczyć pełny dziennik (ale wydaje się, że nie ma więcej istotnych informacji) za pomocą pastebin w razie potrzeby.

Odpowiedzi (14)

39
39
39
2012-12-03 20:05:07 +0000

set http_proxy działał naprawdę dobrze dla mnie, ale musiałem go wprowadzić za każdym razem, gdy otwierałem wiersz poleceń. Musiałem więc połączyć wiele odpowiedzi i teraz moja jest stała.

Moja sekwencja przebiegała następująco:

  • Przejdź do C:\Users\YourUserName
  • Utwórz plik o nazwie .npmrc
  • Wewnątrz tego pliku wpisz następujące (jeśli jesteś w domenie AD):

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

  • Lub użyj tego, jeśli NIE jesteś w domenie AD:

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

  • Zapisz plik
  • Otwórz wiersz poleceń i spróbuj użyć npm

Inni mieli dodatkowy sukces z następującym dodatkowym poleceniem:

strict-ssl = false

\NPowinieneś być w stanie użyć adresu IP lub adresu URL do proxy w miejsce “IP” powyżej.

Twój ciąg proxy może wymagać drobnych poprawek, ale dzięki temu nie musiałem dodawać tego za każdym razem.

Na zdrowie

10
10
10
2011-10-19 17:19:05 +0000

Może ustawienie zmiennej środowiskowej zadziała dla ciebie:

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

(W moim przypadku rozwiązuje to problem “connect UNKNOWN”, ale dostaję zupełnie inny błąd “socket hang up”. Próbowałem również ustawić zmienną środowiskową HTTPS_PROXY, ale uzyskałem ten sam rezultat).

8
8
8
2011-11-16 16:41:09 +0000

Miałem ten identyczny problem i oto, co zrobiłem, aby to zadziałało:

  • Przejdź do: C:\Users\YourUserName
  • Utwórz plik o nazwie .npmrc
  • A jego wpis będzie brzmiał:

  • Spróbuj ponownie polecenia node cli.js install npm -gf.

4
4
4
2012-03-12 09:56:43 +0000

Po kilku poszukiwaniach, mógłbym go użyć w ten sposób:

  1. Zainstaluj NTLM Authorization Proxy Server lub inny serwer proxy dla NTLM, jak Cntlm. Osobiście wolę serwer pythonowy, ponieważ mogę przy nim majstrować, a wydajność nie jest problemem.

  2. Ustaw konfigurację; zauważ, że w moim przypadku musiałem włączyć zarówno tryb LM, jak i NT, i podejrzewałbym, że jest to normalny przypadek w dzisiejszych czasach.

  3. Ustaw zmienne środowiskowe http_proxy i https_proxy, aby wskazywały na twoje lokalne proxy:

  4. npm powinien teraz działać, oczywiście powinien być wykonywany z powłoki, w której zdefiniowane są powyższe zmienne środowiskowe.

3
3
3
2013-09-04 10:46:04 +0000

Wpisz to w linii poleceń:

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

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

NIE ZAPOMNIJ WŁĄCZYĆ HTTP:// przed nazwą użytkownika. To zadziałało dla mnie.

3
3
3
2013-06-13 19:12:07 +0000

Dla mnie zadziałało następujące rozwiązanie.

W Windows 7:

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

To powinno utworzyć plik o nazwie .npmrc w folderze C:/users/<username>.

3
3
3
2016-05-03 20:27:58 +0000

Każda z powyższych odpowiedzi wymaga, aby użytkownik zapisał swoje hasło w pliku tekstowym, lub w zmiennej środowiskowej.

Osobiście nie podobały mi się takie rozwiązania, ze względu na ich niezbyt bezpieczne podejście. Spróbowałem więc napisać aplikację, która wstrzykuje token Kerberos aktualnego użytkownika w wymianę danych pomiędzy klientem (npm, bower, git) a proxy. To powiedziawszy, Active Directory jest tylko zastrzeżoną implementacją Kerberos.

Używam tego oprogramowania codziennie, na hoście Windows 8.1. Kod (golang) i pierwsze wydanie binarne można znaleźć na https://github.com/nilleb/authentication-proxy .

2
2
2
2012-05-02 03:41:48 +0000

Ten problem rozwiązał się dla mnie po utworzeniu pliku .npmrc jak powyżej, a następnie uruchomieniu polecenia adduser i następujących monitów cmd.

npm adduser

Uruchom następujące polecenie, aby sprawdzić, czy masz autoryzowaną nazwę użytkownika:

npm whoami
1
1
1
2015-07-07 21:58:10 +0000

Host i port proxy otrzymasz od administratora serwera lub pomocy technicznej.

Po tym ustaw

npm config set http_proxy http://username:password@proxyofmycomp.com:itsport
npm config set proxy http://username:password@proxyofmycomp.com:itsport

Jeśli w haśle jest jakiś znak specjalny spróbuj użyć % urlencode. Np:- funt (hash) powinien być zastąpiony przez %23.

1
1
1
2015-06-18 09:54:36 +0000

Przynajmniej w systemie Windows działa to dla mnie z następującymi ustawieniami:

proxy=http://_domain_%5C_username_:_password_@ **_proxy\_ip_** :_port_

tj. (1) użyj %5C zamiast `Przynajmniej w systemie Windows działa to dla mnie z następującymi ustawieniami:

proxy=http://_domain_%5C_username_:_password_@ **_proxy\_ip_** :_port_

tj. (1) użyj %5C zamiast (jak sugerowano w innym miejscu) i (2) użyj adresu IP zamiast lokalnej nazwy maszyny dla serwera proxy.

1
1
1
2013-09-27 06:46:50 +0000

Wszystkie trzy rzeczy działały dla mnie w .npmrc

proxy = http://unam:pwd@host:port
https-proxy = http://unam:pwd@host:port
registry = http://registry.npmjs.org
0
0
0
2016-02-22 06:19:01 +0000

Rozwiązanie, które zadziałało dla mnie jest następujące:

npm config set http_proxy http://username:password@host/IP:port

npm config set proxy http://username:password@host/IP:port

zastąp parametry wartościami, w moim przypadku

username : (puste)

password : (puste)

host/IP : 192.36.36.110

port : 8080

więc moje komendy to

npm config set http_proxy TEMP0:@192.36.36.110:8080

npm config set proxy TEMP0:@192.36.36.110:8080

0
0
0
2018-01-08 22:13:37 +0000

U mnie zadziałało to w następujący sposób:

registry=http://registry.npmjs.org
proxy=http://<url.pac>
https-proxy=http://<url.pac>
http-proxy=http://<url.pac>
strict-ssl=false

Nie musiałem wpisywać żadnych nazw użytkowników ani haseł, po prostu adres url pliku PAC.

0
0
0
2016-04-29 05:14:16 +0000

CNTLM nie zadziałało dla mnie. Wypróbowałem wszystkie możliwe kombinacje. NPM dawał błąd uwierzytelniania. Fiddler przyszedł na ratunek i uratował mój czas. Jest łatwy do zainstalowania i skonfigurowania. Ustaw regułę Fiddlera na Automatically Authenticated.In .npmrc ustaw te

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

To zadziałało dla mnie :)