Odpowiedzi:
Rozwiązałem ten problem w ten sposób:
Uruchomię to polecenie:
npm config set strict-ssl false
Następnie ustaw npm na działanie z http zamiast z https:
npm config set registry "http://registry.npmjs.org/"
Następnie instaluję pakiety przy użyciu tej składni:
npm --proxy http://username:password@cacheaddress.com.br:80 install packagename
Pomiń username:password
część, jeśli serwer proxy nie wymaga uwierzytelnienia
EDYCJA: Mój przyjaciel właśnie zauważył, że możesz zmusić NPM do pracy za proxy, ustawiając BOTH HTTP_PROXY i HTTPS_PROXY, a następnie wydając normalnie polecenie npm install express (na przykład)
EDIT2: Jak skomentował @BStruthers, pamiętaj, że hasła zawierające „@” nie zostaną poprawnie przeanalizowane, jeśli zawiera @, wpisz całe hasło w cudzysłowie
my@password
, plik .npmrc powinien zawierać my%40password
część hasła. Umieszczanie go w cudzysłowach działa w niektórych przypadkach, ale kodowanie jest niezawodne.
Skonfiguruj npm
serwer proxy
Dla HTTP
:
npm config set proxy http://proxy_host:port
Dla HTTPS
:
użyj adresu proxy https, jeśli taki istnieje
npm config set https-proxy https://proxy.company.com:8080
w przeciwnym razie ponownie użyj adresu proxy http
npm config set https-proxy http://proxy.company.com:8080
Uwaga : https-proxy nie ma https
jako protokołu, ale http
.
W razie wątpliwości wypróbuj wszystkie te polecenia, tak jak ja:
npm config set registry http://registry.npmjs.org/
npm config set proxy http://myusername:mypassword@proxy.us.somecompany:8080
npm config set https-proxy http://myusername:mypassword@proxy.us.somecompany:8080
npm config set strict-ssl false
set HTTPS_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080
set HTTP_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080
export HTTPS_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080
export HTTP_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080
export http_proxy=http://myusername:mypassword@proxy.us.somecompany:8080
npm --proxy http://myusername:mypassword@proxy.us.somecompany:8080 \
--without-ssl --insecure -g install
=======
Umieść swoje ustawienia do ~/.bashrc
albo ~/.bash_profile
więc nie trzeba się martwić o ustawienia za każdym otwarciu nowego okna terminala!
Jeśli twoja firma jest podobna do mojej, muszę dość często zmieniać hasło. Dodałem więc do mojego ~ / .bashrc lub ~ / .bash_profile, aby za każdym razem, gdy otwieram terminal, wiedziałem, że mój npm jest aktualny!
Po prostu wklej następujący kod na dole ~/.bashrc
pliku:
######################
# User Variables (Edit These!)
######################
username="myusername"
password="mypassword"
proxy="mycompany:8080"
######################
# Environement Variables
# (npm does use these variables, and they are vital to lots of applications)
######################
export HTTPS_PROXY="http://$username:$password@$proxy"
export HTTP_PROXY="http://$username:$password@$proxy"
export http_proxy="http://$username:$password@$proxy"
export https_proxy="http://$username:$password@$proxy"
export all_proxy="http://$username:$password@$proxy"
export ftp_proxy="http://$username:$password@$proxy"
export dns_proxy="http://$username:$password@$proxy"
export rsync_proxy="http://$username:$password@$proxy"
export no_proxy="127.0.0.10/8, localhost, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16"
######################
# npm Settings
######################
npm config set registry http://registry.npmjs.org/
npm config set proxy "http://$username:$password@$proxy"
npm config set https-proxy "http://$username:$password@$proxy"
npm config set strict-ssl false
echo "registry=http://registry.npmjs.org/" > ~/.npmrc
echo "proxy=http://$username:$password@$proxy" >> ~/.npmrc
echo "strict-ssl=false" >> ~/.npmrc
echo "http-proxy=http://$username:$password@$proxy" >> ~/.npmrc
echo "http_proxy=http://$username:$password@$proxy" >> ~/.npmrc
echo "https_proxy=http://$username:$password@$proxy" >> ~/.npmrc
echo "https-proxy=http://$username:$password@$proxy" >> ~/.npmrc
######################
# WGET SETTINGS
# (Bonus Settings! Not required for npm to work, but needed for lots of other programs)
######################
echo "https_proxy = http://$username:$password@$proxy/" > ~/.wgetrc
echo "http_proxy = http://$username:$password@$proxy/" >> ~/.wgetrc
echo "ftp_proxy = http://$username:$password@$proxy/" >> ~/.wgetrc
echo "use_proxy = on" >> ~/.wgetrc
######################
# CURL SETTINGS
# (Bonus Settings! Not required for npm to work, but needed for lots of other programs)
######################
echo "proxy=http://$username:$password@$proxy" > ~/.curlrc
Następnie edytuj pola „nazwa użytkownika”, „hasło” i „proxy” w wklejonym kodzie.
Otwórz nowy terminal
Sprawdź ustawienia, uruchamiając npm config list
icat ~/.npmrc
Spróbuj zainstalować moduł za pomocą
npm install __
lub npm --without-ssl --insecure install __
lub npm --without-ssl --insecure --proxy http://username:password@proxy:8080 install __
.-g
npm config set registry http://registry.npmjs.org/
, npm config set proxy http://myusername:mypassword@proxy.us.somecompany:8080
, npm config set https-proxy http://myusername:mypassword@proxy.us.somecompany:8080
, npm config set strict-ssl false
dla npm config, a następnie zainstalować pakiet npm użyciem npm --proxy http://myusername:mypassword@proxy.us.somecompany:8080 --without-ssl --insecure -g install {packagename}
. Dzięki
Czy wypróbowałeś opcje wiersza polecenia zamiast .npmrc
pliku?
Myślę, że coś npm --proxy http://proxy-server:8080/ install {package-name}
dla mnie zadziałało.
Widziałem także:
npm config set proxy http://proxy-server:8080/
Chociaż istnieje już wiele dobrych rad, dla mojego środowiska (Windows 7, przy użyciu PowerShell) i ostatniej dostępnej wersji node.js (v8.1.2) wszystkie powyższe nie działały, z wyjątkiem sytuacji, gdy przestrzegałem ustawień brunowego .
Sprawdź więc swoje ustawienia za pomocą:
npm config list
Ustawienia za proxy:
npm config set registry http://registry.npmjs.org/
npm config set http-proxy http://username:password@ip:port
npm config set https-proxy http://username:password@ip:port
npm config set proxy http://username:password@ip:port
npm set strict-ssl false
Mam nadzieję, że pozwoli to komuś zaoszczędzić czas
Działa to dla mnie w systemie Windows:
npm config set proxy http://domain%5Cuser:pass@host:port
Jeśli nie jesteś w żadnej domenie, użyj:
npm config set proxy http://user:pass@host:port
Jeśli hasło zawiera znaki specjalne, takie jak "
, @
, :
i tak dalej, zastąpić je przez ich URL zakodowane wartości. Na przykład "
-> %22
, @
-> %40
, :
-> %3A
. %5C
jest używany dla postaci \
.
encodeURIComponent("YourP@ssword")
aby uzyskać zakodowaną wersję hasła.
Aby skonfigurować serwer proxy HTTP, należy ustawić flagę -g :
sudo npm config set proxy http://proxy_host:port -g
W przypadku serwera proxy https ponownie upewnij się, że ustawiona jest opcja -g :
sudo npm config set https-proxy http://proxy_host:port -g
$ npm config set proxy http://login:pass@host:port
$ npm config set https-proxy http://login:pass@host:port
To zadziałało dla mnie
npm config set proxy http://proxy.company.com:8080
npm config set https-proxy http://proxy.company.com:8080
npm set strict-ssl=false
vim ~/.npmrc
na komputerze z systemem Linux i dodaj następujące. Nie zapomnij dodać registry
części, ponieważ w wielu przypadkach powoduje to awarię.
proxy=http://<proxy-url>:<port>
https-proxy=https://<proxy-url>:<port>
registry=http://registry.npmjs.org/
https-proxy=https://..
nahttps-proxy=http://..
W końcu udało mi się rozwiązać ten problem, będąc proxy z uwierzytelnianiem AD. Musiałem wykonać:
npm config set proxy http://domain%5Cuser:password@proxy:port/
npm config set https-proxy http://domain%5Cuser:password@proxy:port/
Bardzo ważne jest, aby kodować URL dowolnymi specjalnymi znakami, takimi jak backshlash lub # W moim przypadku musiałem kodować
backshlash
z% 5C, więc domain\user will
bądźdomain%5Cuser
#
zaloguj się %23%0A
tak jak hasło Password#2
będziePassword%23%0A2
Dodałem również następujące ustawienia:
npm config set strict-ssl false
npm config set registry http://registry.npmjs.org/
Chociaż ustawiłem proxy za pomocą config, problem nie został rozwiązany, ale później Ten działał dla mnie:
npm --https-proxy http://XX.AA.AA.BB:8080 zainstaluj wtyczki cordova
npm --proxy http://XX.AA.AA.BB:8080 instalacja
Próbowałem wszystkich tych opcji, ale z jakiegoś powodu mój serwer proxy nie miał żadnej z nich. Potem, urodzony z rozpaczy / rozpaczy, losowo spróbowałem curl
w mojej skorupie Git Bash i zadziałało.
Wyłączenie wszystkich opcji proxy za pomocą
npm config rm proxy
npm config rm https-proxy
A potem uruchomienie npm install
mojej powłoki Git Bash działało idealnie. Nie wiem, jak to jest poprawnie skonfigurowane dla proxy, a cmd
monit Windows nie jest, ale działał.
npm config set proxy <http://...>:<port_number>
npm config set registry http://registry.npmjs.org/
To rozwiązało mój problem.
Po ostatecznym powiązaniu różnych odpowiedzi pierwsze cztery wiersze odpowiedzi @Kayvar pomagają mi rozwiązać problem:
npm config set registry http://registry.npmjs.org/
npm config set proxy http://myusername:mypassword@proxy.us.somecompany:8080
npm config set https-proxy http://myusername:mypassword@proxy.us.somecompany:8080
npm config set strict-ssl false
To zadziałało dla mnie. Ustaw serwer proxy HTTP i https.
Spróbuj znaleźć plik .npmrc w folderze C: \ Users \ .npmrc
następnie otwórz (notatnik), napisz i zapisz w środku:
proxy=http://<username>:<pass>@<proxyhost>:<port>
PS: proszę usunąć „<” i „>” !!
Dla mnie, mimo że python itp. Wszystko będzie działać, chociaż nasz korporacyjny serwer proxy npm nie.
próbowałem
npm config set proxy http://proxyccc.xxx.ca:8080
npm config set https-proxy https://proxyccc.xxx.ca:8080
npm config set registry http://registry.npmjs.org/
zgodnie z instrukcją, ale ciągle pojawia się ten sam błąd.
Dopiero gdy usunąłem
https-proxy https://proxyccc.xxx.ca:8080
z pliku .npmrc, npm zainstalował elektron - zadziałało save-dev
https-proxy
prawdopodobnie nie jest https:
. Przynajmniej posiadanie tego samego portu dla każdego prawdopodobnie nie jest poprawne, ale myślę, że oba mają prawdopodobnie tę samą wartość.
W systemie Windows
Spróbuj usunąć ustawienia proxy i rejestru (jeśli są już ustawione) i ustaw zmienne środowiskowe w wierszu poleceń za pośrednictwem
SET HTTP_PROXY=http://username:password@domain:port
SET HTTPS_PROXY=http://username:password@domain:port
następnie spróbuj uruchomić npm install. Dzięki temu nie ustawisz proxy w .npmrc, ale dla tej sesji będzie działać.
SET HTTP_PROXY http://username:password@domain:port
ale przełączanie na SET HTTP_PROXY=http://username:password@domain:port
wydawało się, że wszystko działa
Użyj poniższego polecenia w cmd lub GIT Bash lub w innym wierszu poleceń
$ Npm config zestaw proxy " http://192.168.1.101:4128 "
Zestaw konfiguracyjny npm $ https-proxy " http://192.168.1.101:4128 "
gdzie 192.168.1.101 to proxy ip, a 4128 to port. zmień zgodnie z ustawieniami serwera proxy. to działa dla mnie.
Wiele aplikacji (np. Npm) może korzystać z ustawień proxy ze zmiennych środowiskowych użytkownika.
Możesz po prostu dodać do swojego środowiska następujące zmienne HTTP_PROXY i HTTPS_PROXY, które będą miały tę samą wartość dla każdego
http: // użytkownik: hasło @ proxy Adres: proxyPort
Na przykład jeśli masz system Windows, możesz dodać serwer proxy w następujący sposób:
W moim przypadku zapomniałem ustawić „http: //” w moich plikach konfiguracyjnych (można je znaleźć w C: \ Users \ [USERNAME] \ .npmrc) adresy proxy. Więc zamiast mieć
proxy=http://[IPADDRESS]:[PORTNUMBER]
https-proxy=http://[IPADDRESS]:[PORTNUMBER]
miałem
proxy=[IPADDRESS]:[PORTNUMBER]
https-proxy=[IPADDRESS]:[PORTNUMBER]
Co oczywiście nie działało, ale komunikaty o błędach również niewiele pomogły ...
Na powyższe pytanie było wiele odpowiedzi, ale żadna z nich nie działała dla mnie. Wszystkie wymienione, aby dodać http://
prefiks. Więc też to dodałem. Wszystko zawiodło.
W końcu działa, gdy przypadkowo usunąłem http://
prefiks. Ostateczna konfiguracja wygląda następująco:
npm config set registry http://registry.npmjs.org/
npm config set http-proxy ip:port
npm config set https-proxy ip:port
npm config set proxy ip:port
npm set strict-ssl false
Nie znam logiki tego, ale zadziałało. Jeśli żadna z powyższych odpowiedzi nie działa dla Ciebie, być może możesz spróbować w ten sposób. Mam nadzieję, że to się przyda.
Na stronie curl znajdują się dobre informacje na temat problemów z SSL i certyfikatami . Większość odpowiedzi opieram na zawartych tam informacjach.
Używanie false-ssl false jest złą praktyką i może powodować problemy. Zamiast tego możemy dodać certyfikat, który jest wstrzykiwany przez certyfikat „człowiek w środku”.
Jak rozwiązać ten problem w systemie Windows:
openssl x509 -inform DES -in **rootcert**.cer -out outcert.pem -text
npm config set cafile **C:\Users\username\cacert.pem
npm config set strict-ssl true
Uff! Zrobiliśmy to! Teraz npm może zrozumieć, jak się połączyć. Premia polega na tym, że możesz powiedzieć curlowi, aby używał tego samego cabundle.pem, a także zrozumie HTTPs.
Oto kroki, które wykonałem (Windows):
C:\Users\<WIN_USERNAME>\.npmrc
Wyeksportuj certyfikat do swojego systemu plików z następującego adresu: https://registry.npmjs.org
Przejdź do lokalizacji wyeksportowanego certyfikatu i wydaj następujące polecenie:
npm config set cafile npm_certificate.cer
Dodaj następujące zmiany do pliku:
registry=https://registry.npmjs.org/
strict-ssl=false
https-proxy=http://[proxy_user]:[proxy_password]@[proxy_ip]:[proxy_port]/
cafile=npm_certificate.cer
Teraz powinieneś być gotowy do pracy!
Moja sprawa sprowadza się do głupiego błędu z mojej strony. Ponieważ pewnego dnia szybko upuściłem swoje serwery proxy do pliku Windows * .bat (http_proxy, https_proxy i ftp_proxy), zapomniałem uciec od znaków specjalnych dla domeny \ użytkownika zakodowanej w adresie URL (% 5C) i hasła ze znakiem zapytania „?” (% 3F). Innymi słowy, kiedy masz zakodowane polecenie, nie zapomnij uciec od „%” w poleceniu pliku bat.
Zmieniłam
set http_proxy=http://domain%5Cuser:password%3F@myproxy:8080
do
set http_proxy=http://domain%%5Cuser:password%%3F@myproxy:8080
Może to przypadek na marginesie, ale mam nadzieję, że komuś pomoże.
kiedy podaję bez prefiksu http / http w ustawieniach proxy npm nie powiodło się, nawet jeśli host i port proxy miały prawidłowe wartości. Działało to dopiero po dodaniu prefiksu protokołu.
Po prostu otwórz nowy terminal i wpisz npm config edit
i npm config -g edit
. Przywróć domyślne. Po tym zamkniętym terminalu otwórz nowy i wpisz, npm --without-ssl --insecure --proxy http://username:password@proxy:8080 install <package>
jeśli potrzebujesz globalnie, po prostu dodaj -g
.
To zadziałało dla mnie, mam nadzieję, że zadziała dla ciebie :)