Używanie npm za korporacyjnym serwerem proxy .pac

158

Muszę pobrać kilka pakietów przez npm, ale nasza korporacyjna konfiguracja proxy to plik .pac (jestem w systemie Windows)

Już próbowałem

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

lub

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

ale to nie działa ...

jakieś sugestie? dzięki

Doc
źródło
8
Nie sądzę, aby to pytanie było zduplikowane, skrypty pac mogą zawierać wiele adresów proxy w zależności od docelowego adresu IP / hosta, podczas gdy kostka adresuje tylko 1 adres proxy - Z recenzji
Ferrybig
1
Ani jedna odpowiedź nie wskazuje, jak używać skryptów pac, które mogą zawierać wiele adresów proxy w zależności od docelowego adresu IP / hosta. Czy ktoś może pomóc, proszę.
Partha Sarathi Ghosh
2
U mnie pomogło otworzyć proxy.pacplik w celu uzyskania z niego adresu proxy. (W moim przypadku po prostu musiałem przełączyć port na 8080).
nomad
@ParthaSarathiGhosh Masz rację, żadna z odpowiedzi nie wyjaśnia, jak używać skryptów PAC, więc dodałem kolejną odpowiedź, która dotyczy tego: stackoverflow.com/a/61811444 . Spóźnia się kilka lat, ale lepiej późno niż wcale?
user1031921

Odpowiedzi:

204

Właśnie miałem bardzo podobny problem, w którym nie mogłem zmusić npm do pracy za naszym serwerem proxy.

Moja nazwa użytkownika ma postać „domena \ nazwa_użytkownika” - włączenie ukośnika w konfiguracji serwera proxy spowodowało pojawienie się ukośnika. Więc wpisując to:

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

następnie uruchomienie npm config get proxyzwraca to: http: // domena / nazwa użytkownika: hasło @ nazwa_serwera: port /

Dlatego, aby rozwiązać problem, zamiast tego zakodowałem URL-a, więc wpisałem to:

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

i dzięki temu dostęp proxy został naprawiony.

Steve Roberts
źródło
5
to jest przyczyna, dla której brakuje% 5C. kluczową częścią jest C .... zobacz, jak to dla ciebie rozłożyłem
sinisterrook
1
Właśnie zaktualizowałem niektóre rzeczy i mój serwer proxy ponownie przestał działać. Okazało się, że w ustawieniu „proxy” pliku .npmrc (jak wspomniał poniżej @Ovidiu Buligan) zawierał on% 5C jako ukośnik odwrotny, ale „https-proxy” zawierał tylko „\”. Zmiana tego również na% 5C rozwiązała problem. Przypuszczam, że można to również zaktualizować, uruchamiając zestawu npm config http_proxy " domena% 5Cusername: hasło @ nazwa_serwera: port /"
Steve Roberts
1
Próbuję skonfigurować npm za proxy, ale jest sposób na wykonanie „ping” przy użyciu konfiguracji npm. Ponieważ jeśli moje conf jest błędne, mój użytkownik zostanie zablokowany na mojej firmowej domenie.
Ricardo
3
To, co zadziałało, to najpierw WYCZYŚĆ zmienne środowiskowe. Użyj set HTTP_PROXY = i ustaw HTTPS_PROXY =
Sydwell
4
Dodawanie strict-ssl=falsedo .npmrcpliku konfiguracyjnego rozwiązane za mnie za korporacyjnym proxy - zobacz odpowiedzi od @ ovidiu-buligan i @ karthikeyan-a
Alexander McFarlane.
64

Poszukaj pacadresu URL pliku w ustawieniach LAN programu Internet Explorer i pobierz plik PAC ze skonfigurowanego adresu URL. Plik pac to po prostu plik javascript z funkcją o nazwie, FindProxyForURLktóra zwraca różne hosty proxy w różnych scenariuszach.

Spróbuj znaleźć hosta w tym pliku pac, który Twoim zdaniem jest przeznaczony dla ogólnego ruchu internetowego i podłącz go do .npmrc C:\Users\<username>\.npmrc

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

Nawet jeśli możesz zalogować się przy użyciu swojej domeny i nazwy użytkownika na komputerze firmowym, jest wysoce prawdopodobne, że nazwa domeny użytkownika Active Directory nie jest wymagana dla serwera proxy , a jedynie nazwa użytkownika i hasło (które mogą być inne niż login Active Directory)

Nie zapomnij bawić się unikającymi znakami specjalnych haseł.

Ovidiu Buligan
źródło
dzięki. Przeszedłem do .npmrc i zmieniłem ustawienia. zadziałało
arn-arn
54

Pobierz swój .pacplik. Otwórz go w dowolnym edytorze i poszukaj PROXY = "PROXY X.X.X.X:80;. Możesz mieć wiele serwerów proxy, skopiować dowolne z nich i uruchomić następujące polecenia terminala:

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

Teraz powinieneś być w stanie zainstalować dowolny pakiet!

Sumeet_Pol
źródło
1
W przypadku części https-proxy musiałem zrobić „... set https-proxy = http: // ...” zamiast „... set https-proxy http: // ...”, aby to było praca. Tylko 0,02 dolara.
Nick
Dzięki ustawieniu https-proxy na http: // jest jedyną rzeczą, która działała; po usunięciu ustawień zmiennych środowiskowych http_proxy i https_proxy z bash!
Alex Punnen
W przypadku https-proxy nie mogłem ustawić opcji „ustaw https-proxy https: /.../”, musiałem ustawić opcję „ustaw https-proxy http: // ...” (informacje o serwerze proxy z https -> http)
Mars,
to samo dotyczy gita,git config --global http.proxy http://X.X.X.X:80 git config --global https.proxy http://X.X.X.X:80
Code Name Jack
38

Rozwiązałem ten problem w ten sposób:

1) Uruchamiam to polecenie:

npm config set strict-ssl false

2) Następnie ustaw npm tak, aby działał z protokołem http zamiast https:

npm config set registry "http://registry.npmjs.org/"

3) Następnie zainstaluj pakiet

npm install <package name>

KARTHIKEYAN.A
źródło
2
Wystarczy wskazać, że ustawienie KMP w ścisłej-ssl na false jest kwestia bezpieczeństwa. Zamiast tego rozważ prawidłowe skonfigurowanie ca[]właściwości na npm.
Aaron C
26

Aby rozwinąć @Steve Roberts, odpowiedz.

Moja nazwa użytkownika ma postać „domena \ nazwa_użytkownika” - włączenie ukośnika w konfiguracji serwera proxy spowodowało pojawienie się ukośnika. Więc wpisując to:

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

Musiałem również zakodować mój domain\userciąg w adresie URL , jednak mam spację wewnątrz mojej nazwy użytkownika, więc umieściłem a, +aby zakodować kodowanie adresu URL spacji, ale zostanie to podwójnie zakodowane jako %2B(co jest kodowaniem adresu URL dla znaku plusa, jednak adres URL kodowanie spacji to%20 ), więc zamiast tego musiałem wykonać następujące czynności:

npm polecenie

// 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"

rozwiązywanie problemów npm config

Użyłem tego, npm config listaby uzyskać przeanalizowane wartości, które ustawiłem powyżej, i w ten sposób dowiedziałem się o podwójnym kodowaniu. Dziwne.

Zasadniczo musisz określić następujące wymagania:

  1. Czy DOMAINciąg jest wymagany do uwierzytelnienia
  2. Czy potrzebujesz zakodować znaki specjalne?
    • Spacje i znaki (@) są szczególnie trudne

Pozdrowienia.

ZMIENNE ŚRODOWISKOWE WINDOWS (monit CMD)

Aktualizacja

Okazuje się, że nawet przy powyższych konfiguracjach nadal miałem pewne problemy z niektórymi pakietami / skryptami, które używają wewnętrznie żądania - uproszczonego klienta HTTP do pobierania rzeczy. Tak więc, jak wyjaśniono powyżej, możemy określić zmienne środowiskowe aby ustawić proxy w wierszu poleceń, a Request będzie honorować te wartości.

Następnie, po (i niechętnie się do tego przyznaję) kilku próbach (bardziej jak dni), próby ustawienia zmiennych środowiskowych, w końcu udało mi się z następującymi wskazówkami:

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

Używałem powyższej techniki przez kilka tygodni, dopóki nie zdałem sobie sprawy z obciążenia związanego z aktualizacją hasła we wszystkich narzędziach, które wymagały konfiguracji proxy.

Oprócz npm używam również:

  • altana
  • włóczęga
    • wirtualne pudełko (z systemem Linux)
    • apt-get [linux]
  • git
  • vscode
  • nawiasy
  • atom
  • tsd

Kroki konfiguracji cntlm

Więc zainstalowałem cntlm . Ustawienie cntlmjest dość proste, szukasz pliku ini @C:\Program Files\Cntlm\cntlm.ini

  1. Otwórz C:\Program Files\Cntlm\cntlm.ini(możesz potrzebować uprawnień administratora)
  2. szukaj Usernamei Domainlinii (myślę, że linia 8-9)
    • dodaj swoją nazwę użytkownika
    • dodaj swoją domenę
  3. Po poleceniu cmd uruchom:

    cd C:\Program Files\Cntlm\
    cntlm -M
    cntlm -H  
    • zostaniesz poproszony o hasło:
     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. Wynik, który otrzymasz, cntlm -Hbędzie wyglądał mniej więcej tak:

    PassLM          561DF6AF15D5A5ADG  
    PassNT          A1D651A5F15DFA5AD  
    PassNTLMv2      A1D65F1A65D1ASD51  # Only for user 'user name', domain 'DOMAIN'
    • Zaleca się używanie PassNTLMv2, więc dodaj #linię przed PassLMi PassNTlub nie używaj ich
  5. Wklej wyjście ze cntlm -Hw pliku ini zastępując linie dla PassLM, PassNTi PassNTMLv2, lub komentarz oryginalne linie i dodać je.
  6. Dodaj swoje Proxyserwery. Jeśli nie wiesz, co to jest serwer proxy ... Zrób to, co zrobiłem, szukałem pliku automatycznej konfiguracji proxy, szukając AutoConfigURLklucza rejestru w HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings. Przejdź do tego adresu URL i przejrzyj kod, którym jest JavaScript.
  7. Opcjonalnie możesz zmienić port, na którym nasłuchuje cntlm, zmieniając Listen ####wiersz, w którym ####jest numer portu.

Skonfiguruj NPM z cntlm

Więc wskazujesz npm na swoje proxy cntml, możesz użyć adresu IP, którego użyłem localhosti domyślnego portu dla cntlm, 3128więc mój adres URL serwera proxy wygląda tak

http://localhost:3128

Odpowiednią komendą:

npm config ustaw proxy http: // localhost: 3128

Jest dużo prostsze. Konfigurujesz wszystkie narzędzia z tym samym adresem URL i aktualizujesz hasło tylko w jednym miejscu. Życie nie jest o wiele prostsze.

Należy skonfigurować certyfikat npm CA.

Z dokumentacji npm ca

Jeśli korporacyjny serwer proxy przechwytuje połączenia https za pomocą własnego certyfikatu z podpisem własnym, należy tego unikać npm config set strict-ssl false (duże nie, nie).

Podstawowe kroki

  1. Pobierz certyfikat ze swojej przeglądarki (Chromes działa dobrze). Wyeksportuj go jako X.509 zakodowany w Base-64 (.CER)
  2. Zamień nowe linie na \n
  3. Edytuj .npmrcdodaj linięca[]="-----BEGIN CERTIFICATE-----\nXXXX\nXXXX\n-----END CERTIFICATE-----"

Zagadnienia

Zauważyłem, że czasami zawiesza się npm, więc zatrzymuję (czasem na siłę) cntlm i restartuję go.

Aaron C.
źródło
7

Miałem z tym kilka problemów i ostatecznie to, co zrobiłem, wyglądało następująco:

  1. Używany Fiddler z zaznaczoną opcją „Automatycznie uwierzytelniaj”
  2. Dodałem w niestandardowych regułach skrzypka

    if (m_AutoAuth) {oSession["X-AutoAuth"] = "domain\\username:password";}
  3. Wreszcie w npm ustawiłem serwer proxy na http: // localhost: 8888

To działało dobrze.

Shoel Palli
źródło
Dzięki! Działało jak urok !! Mój scenariusz: nazwa użytkownika miała format „domena / nazwa użytkownika”. Hasło zawierało „@”. W ogóle nie
musiałem kodować
U mnie zadziałało idealnie. Dziękuję bardzo. Chciałem tylko zwrócić uwagę, że używanie "domain\\username:password"może stanowić zagrożenie bezpieczeństwa związane z kradzieżą tożsamości. Zamiast tego użycie "(default)"konfiguracji w niestandardowych regułach zadziałało czarująco. Aby to zadziałało, Fiddler musi być uruchomiony, gdy używasz „npm”.
pk10
7

Dla każdego, kto boryka się z firmową zaporą ogniową, a także z problemami z SSL (nie można uzyskać certyfikatu lokalnego wydawcy), oto kilka kroków, które możesz wypróbować:

Zapomnij o SSL

Jeśli nie obawiasz się SSL, możesz postępować zgodnie z radami wielu poprzednich współpracowników, ustawiając swoje serwery proxy i zmieniając rejestr na wersję niezabezpieczoną:

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/

Szybka "gotcha" tutaj, moje dane uwierzytelniające proxy są takie same dla zabezpieczonych i niezabezpieczonych żądań (zwróć uwagę, jak zostawiłem mój protokół jako http: // dla konfiguracji https-proxy ). Może to być to samo dla ciebie, ale może nie.

Chcę zachować SSL

Jeśli chcesz zachować SSL i nie chcesz go używać strict-ssl=false, masz więcej do zrobienia. W moim przypadku jestem za zaporą firmową i używamy certyfikatów z podpisem własnym, więc otrzymuję błąd unable to get local issuer certificate. Jeśli jesteś na tej samej łodzi co ja, musisz ustawić cafile=opcję w pliku konfiguracyjnym npm. Najpierw musisz utworzyć plik PEM zawierający informacje o certyfikatach z podpisem własnym. Jeśli nie wiesz, jak to zrobić, oto instrukcje dotyczące środowiska Windows bez korzystania z oprogramowania innej firmy:

Musimy wyraźnie wskazać, którym certyfikatom należy ufać, ponieważ używamy certyfikatów z podpisem własnym. Na przykład przeszedłem do www.google.com przy użyciu przeglądarki Chrome, aby pobrać certyfikaty.

W przeglądarce Chrome przejdź do Sprawdź -> Bezpieczeństwo -> Wyświetl certyfikat. Zobaczysz wszystkie certyfikaty, które pozwalają na połączenie SSL. Zwróć uwagę, jak te certyfikaty są podpisywane samodzielnie. Niewyraźna część to moja firma, a nie jesteśmy certyfikowanym organem. Możesz wyeksportować pełną ścieżkę certyfikatu jako plik P7B lub możesz wyeksportować certyfikaty pojedynczo jako pliki CER (kodowanie base64). Eksportowanie pełnej ścieżki jako P7B nie zrobi wiele dobrego, ponieważ z kolei będziesz musiał otworzyć ten plik w menedżerze certyfikatów i wyeksportować jako pojedyncze pliki CER. W systemie Windows dwukrotne kliknięcie pliku P7B spowoduje otwarcie aplikacji Menedżer certyfikatów.

wprowadź opis obrazu tutaj

Eksportowanie jako CER (Base 64) jest tak naprawdę plikiem tekstowym w następującym formacie:

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

Aby utworzyć nasz plik PEM, musimy po prostu ułożyć te certyfikaty jeden na drugim w jeden plik i zmienić rozszerzenie na .pem. Użyłem do tego notatnika.

Certyfikaty są układane w stos w odwrotnej kolejności od ścieżki certyfikatu. Tak więc powyżej zaczynałbym od * .google.com, a następnie wklejałbym pod nim Websense, a następnie wystawianie urzędu certyfikacji 1 itd. W ten sposób certyfikaty są analizowane od góry do dołu w celu wyszukania odpowiedniego głównego urzędu certyfikacji. Samo dołączenie głównego urzędu certyfikacji nie zadziała, ale nie musimy też dołączać wszystkich certyfikatów. Z powyższej ścieżki muszę uwzględnić tylko te certyfikaty, które pochodzą przed certyfikatem Websense (wystawiający CA 1, Policy CA, Root CA).

Po zapisaniu certyfikatów z podpisem własnym w pliku PEM jesteśmy gotowi poinstruować firmę npm, aby używała tych certyfikatów jako naszego zaufanego urzędu certyfikacji. Po prostu ustaw plik konfiguracyjny i powinieneś być gotowy:

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

Teraz, z ustawionymi serwerami proxy (http i https) i rejestrem ustawionym na https://registry.npmjs.org, powinieneś być w stanie zainstalować pakiety za korporacyjną zaporą ogniową z samopodpisanymi certyfikatami bez nukowania tego strict-sslustawienia.

John Galt
źródło
6

Możesz sprawdzić Fiddlera, czy NPM podaje błąd uwierzytelniania. Jest łatwy w instalacji i konfiguracji. Ustaw regułę Fiddlera na Automatycznie uwierzytelnione. W pliku NPMrc ustaw te właściwości

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

U mnie zadziałało :)

Rakesh Sharma
źródło
o dziwo, żadna z konfiguracji, których użyłem do mojego proxy nie działała, użyłem tego i otwartego skrzypka i mogłem go używać dobrze ...
Roberto
5

Spróbuj tego, ustaw proxy w npm w następujący sposób

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
źródło
4

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

Po tym skonfigurowaniu

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

Jeśli w haśle jest jakiś znak specjalny, spróbuj użyć% urlencode. Np .: - shuold funta (hash) należy zastąpić% 23.

To zadziałało dla mnie ...

Shamseer
źródło
3

Po prostu utwórz plik o nazwie .npmrc w folderze projektu, pozwoli to uniknąć ustawiania proxy na poziomie systemu

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

Komentuj w ten sposób, jeśli nie używasz serwera proxy

#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
źródło
3

Żadna z istniejących odpowiedzi nie wyjaśnia, jak używać npm z plikiem PAC. Niektórzy sugerują pobranie pliku PAC, ręczne sprawdzenie go i wybranie jednego z ciągów „PROXY ...”. Ale to nie działa, jeśli plik PAC musi wybierać spośród wielu serwerów proxy lub jeśli plik PAC zawiera złożoną logikę do ominięcia serwerów proxy dla niektórych adresów URL.

Ponadto niektóre korporacyjne serwery proxy wymagają uwierzytelniania NTLM. CNTLM może obsługiwać uwierzytelnianie, ale nie obsługuje plików PAC.

Alternatywą jest użycie Alpaca , która wykonuje plik PAC na maszynie wirtualnej JavaScript i przeprowadza uwierzytelnianie NTLM za pomocą wynikowego serwera proxy.

user1031921
źródło
2

Jeśli jesteś za siecią korporacyjną z proxy, właśnie użyłem narzędzia proxy NTLM i użyłem portu i proxy dostarczonego przez NTLM, na przykład użyłem tej konfiguracji:

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

Mam nadzieję, że to pomoże.

yunieski dieguez garcia
źródło
2

Użyj poniższego polecenia w cmd lub GIT Bash lub innym monicie

$ npm config set proxy "http://192.168.1.101:4128"

$ npm config set https-proxy "http://192.168.1.101:4128"

gdzie 192.168.1.101 to proxy ip, a 4128 to port. zmień zgodnie z ustawieniami proxy.

Pankaj
źródło
2

Musisz użyć „npm config set http-proxy

posługiwać się:

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
źródło
1

W pracy używamy ZScalera jako naszego proxy. Jedynym sposobem, w jaki mogłem zmusić npm do działania, było użycie Cntlm .

Zobacz tę odpowiedź:

NPM za proxy NTLM

bruceceng
źródło
1

Spróbuj tego, to był jedyny, który działał dla mnie:

npm --proxy http: //: @proxyhost: --https-proxy http: //: @proxyhost: --strict-ssl false install -g pakiet

Zwróć uwagę na opcję --strict-ssl false

Powodzenia.

Matías Dell'Oso
źródło
1

NPM konfiguracja proxy wymienione w przyjętym odpowiedź rozwiązać ten problem, ale jak widać w tym npm problemu , niektóre zależności wykorzystuje GIT i sprawia, że konfiguracja proxy git potrzebne , a można to zrobić następująco:

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

Wspomniana konfiguracja serwera proxy NPM:

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
źródło
0

Miałem podobny problem i wypróbowałem wszystkie powyższe obejścia, ale żadne z nich nie zadziałało (użyłem znaków specjalnych (takich jak symbol „@”) w moim haśle i musiałem również dodać nazwę domeny).

Poza tym trochę obawiałem się dodania hasła w postaci zwykłego tekstu. Okazało się, że najłatwiejszym rozwiązaniem wszystkich tych wyzwań było użycie pewnego rodzaju odwrotnego proxy (takiego jak Fiddler).

Opisałem już szczegółowo kroki konfiguracji w tej odpowiedzi w SO.

Karthik
źródło
0

Pomogło mi dodanie poniższych wierszy w pliku .typingsrc.

{
    "rejectUnauthorized": false,
    "registryURL" :"http://api.typings.org/"
 }
Tapas Ranjan Singh
źródło
0

Napotkałem podobny problem i odkryłem, że mój plik konfiguracyjny npm (.npmrc) ma nieprawidłowy wpis w rejestrze. skomentował to i ponownie uruchomiłem instalację npm. zadziałało.

Ravi Siva Prasad M
źródło
0

System operacyjny: Windows 7

Kroki, które zadziałały dla mnie:

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

  3. Komentarze: wykonałem to polecenie, aby poznać moje ustawienia proxy
    npm config rm proxy

  4. npm config rm https-proxy
  5. npm config set registry=http://registry.npmjs.org/
  6. npm install
Suchi Dvg
źródło
0

Ponieważ nadal mam problemy z ustawieniem ustawień proxy w pracy i wyłączaniem ich w domu, mam skrypt i publikuję npm-corpo-proxy.sh . W każdej korporacji hasło musi być często zmieniane i musi zawierać specjalne znaki, które muszą być zakodowane przed podaniem konfiguracji npm (to samo dla backash z formularza domena \ użytkownik).

Maciek Leks
źródło
0

Od małego wyszukiwania w Google pierwszą rzeczą, której spróbowałem, było to

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

Jednak nadal wydawało się, że npm tracił połączenie podczas próby wykonania instalacji „npm install”. następnie uruchomiłem tę linię w wierszu poleceń i teraz mogę użyć instalacji npm

set NODE_TLS_REJECT_UNAUTHORIZED=0
Barkin Kaplan
źródło
0

Nie mogłem sprawić, by działało z CNTLM. Próbowałem postępować zgodnie ze wszystkimi informacjami zamieszczonymi powyżej, ale proxy nadal nie autoryzowało połączenia. W przypadku Fiddlera wystarczy go zainstalować i zaznaczyć opcję Automatycznie uwierzytelnione. Ale żeby działać, musiałem usunąć plik .npmrc z mojego folderu użytkownika i ustawić zmienne środowiskowe, jak wskazano tutaj , z następującymi wartościami:

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

set npm_config_registry="http://registry.npmjs.org/"
Guilherme Pereira
źródło