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
proxy.pac
plik w celu uzyskania z niego adresu proxy. (W moim przypadku po prostu musiałem przełączyć port na 8080).Odpowiedzi:
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:
następnie uruchomienie
npm config get proxy
zwraca 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:
i dzięki temu dostęp proxy został naprawiony.
źródło
strict-ssl=false
do.npmrc
pliku konfiguracyjnego rozwiązane za mnie za korporacyjnym proxy - zobacz odpowiedzi od @ ovidiu-buligan i @ karthikeyan-aPoszukaj
pac
adresu 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,FindProxyForURL
któ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
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ł.
źródło
Pobierz swój
.pac
plik. Otwórz go w dowolnym edytorze i poszukajPROXY = "PROXY X.X.X.X:80;
. Możesz mieć wiele serwerów proxy, skopiować dowolne z nich i uruchomić następujące polecenia terminala:Teraz powinieneś być w stanie zainstalować dowolny pakiet!
źródło
git config --global http.proxy http://X.X.X.X:80
git config --global https.proxy http://X.X.X.X:80
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>
źródło
ca[]
właściwości na npm.Aby rozwinąć @Steve Roberts, odpowiedz.
Musiałem również zakodować mój
domain\user
cią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
rozwiązywanie problemów npm config
Użyłem tego,
npm config list
aby 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:
DOMAIN
ciąg jest wymagany do uwierzytelnieniaPozdrowienia.
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:
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ż:
Kroki konfiguracji cntlm
Więc zainstalowałem cntlm . Ustawienie
cntlm
jest dość proste, szukasz pliku ini @C:\Program Files\Cntlm\cntlm.ini
C:\Program Files\Cntlm\cntlm.ini
(możesz potrzebować uprawnień administratora)Username
iDomain
linii (myślę, że linia 8-9)Po poleceniu cmd uruchom:
Wynik, który otrzymasz,
cntlm -H
będzie wyglądał mniej więcej tak:#
linię przedPassLM
iPassNT
lub nie używaj ichcntlm -H
w pliku ini zastępując linie dlaPassLM
,PassNT
iPassNTMLv2
, lub komentarz oryginalne linie i dodać je.Proxy
serwery. Jeśli nie wiesz, co to jest serwer proxy ... Zrób to, co zrobiłem, szukałem pliku automatycznej konfiguracji proxy, szukającAutoConfigURL
klucza rejestru wHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
. Przejdź do tego adresu URL i przejrzyj kod, którym jest JavaScript.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
localhost
i domyślnego portu dla cntlm,3128
więc mój adres URL serwera proxy wygląda takOdpowiednią komendą:
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ć
(duże nie, nie).npm config set strict-ssl false
Podstawowe kroki
\n
.npmrc
dodaj 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.
źródło
Miałem z tym kilka problemów i ostatecznie to, co zrobiłem, wyglądało następująco:
Dodałem w niestandardowych regułach skrzypka
Wreszcie w npm ustawiłem serwer proxy na http: // localhost: 8888
To działało dobrze.
źródło
"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”.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ą:
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łądunable 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.
Eksportowanie jako CER (Base 64) jest tak naprawdę plikiem tekstowym w następującym formacie:
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:
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 tegostrict-ssl
ustawienia.źródło
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
U mnie zadziałało :)
źródło
Spróbuj tego, ustaw proxy w npm w następujący sposób
źródło
Host i port proxy otrzymasz od administratora serwera lub pomocy technicznej.
Po tym skonfigurowaniu
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 ...
źródło
Po prostu utwórz plik o nazwie .npmrc w folderze projektu, pozwoli to uniknąć ustawiania proxy na poziomie systemu
Komentuj w ten sposób, jeśli nie używasz serwera proxy
źródło
Ż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.
źródło
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:
Mam nadzieję, że to pomoże.
źródło
Użyj poniższego polecenia w cmd lub GIT Bash lub innym monicie
gdzie 192.168.1.101 to proxy ip, a 4128 to port. zmień zgodnie z ustawieniami proxy.
źródło
Musisz użyć „npm config set http-proxy ”
posługiwać się:
źródło
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
źródło
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.
źródło
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:
Wspomniana konfiguracja serwera proxy NPM:
źródło
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.
źródło
Pomogło mi dodanie poniższych wierszy w pliku .typingsrc.
źródło
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.
źródło
System operacyjny: Windows 7
Kroki, które zadziałały dla mnie:
npm config get proxy
npm config get https-proxy
Komentarze: wykonałem to polecenie, aby poznać moje ustawienia proxy
npm config rm proxy
npm config rm https-proxy
npm config set registry=http://registry.npmjs.org/
npm install
źródło
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).
źródło
Od małego wyszukiwania w Google pierwszą rzeczą, której spróbowałem, było to
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
źródło
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:
źródło