Konfiguracja Node.js i npm za proxy.


Node.js i npm to narzędzia, które dziś są powszechnie używane przez frontendowców. Teoretycznie nie sprawiają wielkich problemów - o ile oczywiście nie pracujemy w firmie z ustawionym proxy. A ponieważ większość z nas jednak pracuje, to zwłaszcza dla początkujących poprawna konfiguracja npm może być przysłowiowym wrzodem na tyłku.

O CO CHODZI?

Kilka słów wyjaśnienia, przeznaczone dla osób, które nie pracują w tych technologiach.

Node.js to powszechnie stosowany framework open source, używany do tworzenia serwerów www w JavaScript. Jego wielkim atutem jest obsługa aplikacji asynchronicznych. Natomiast npm to domyślny manager pakietów dla tego środowiska.

Sądzę, że nikomu nie muszę tłumaczyć, czym jest proxy.

NA CZYM POLEGA PROBLEM?

Generalnie konfiguracja Node.js nie powinna sprawiać nam żadnego problemu, o ile mamy ustawione zmienne środowiskowe HTTP_PROXY i HTTPS_PROXY. Przynajmniej tak podpowiada zdrowy rozsądek. Jednakże zaglądając w plik konfiguracyjny npm, możemy odkryć że mamy tam do czynienia ze zmiennymi proxy i https-proxy, przy czym to właśnie symbol "-" zamiast "_" jest powodem problemów. Ustawienie zmiennych środowiskowych niestety nie wystarczy w tej sytuacji - musimy ręcznie zmienić konfigurację.

Jeśli chodzi o błędne ustawienia proxy, npm generalnie informuje o nich w dość klarowny sposób przy próbie uruchomienia npm install. Jednakże nie zawsze poprawna konfiguracja zmiennych proxy i https-proxy jest wystarczająca, co może prowadzić do sporej frustracji.

JAK GO ROZWIĄZAĆ?

Jeżeli nasz npm install nie działa, powinniśmy zdecydować się na wykonanie kilku kroków, które pomagają w ogromnej liczbie przypadków. Konfiguracja npm, która pozwala zazwyczaj przebić się przez proxy, powinna zostać przeprowadzona tak:
npm config set registry http://registry.npmjs.org/
npm config set proxy http://username:password@ip:port
npm config set https-proxy http://username:password@ip:port
npm set strict-ssl false

Czyli jak widać ustawiamy ręcznie proxy i https-proxy, podając swojego usera oraz hasło, a także IP i port dla proxy. Link do registry.npmjs.org powinien zaczynać się od http nie https, chociaż przez większość czasu ta część ustawień nie ma wielkiego znaczenia. Istotne bywa za to przestawienie strict-ssl na false.

Żeby upewnić się, że wszystko jest w porządku, warto zawsze sprawdzić:
npm config list

Trochę bardziej pobawią się osoby, które w swoim haśle mają znaki specjalne takie jak "@" czy "%". Pod tym względem npm bywa kapryśny. Zazwyczaj pomaga tutaj kodowanie URL, które zadaniem jest przekształcenie znaków w taki sposób, by były one transmitowalne przez Internet. Możemy to zaobserwować czasami w pasku wyszukiwarki, w adresach niektórych stron. 

Poniżej tabelka dla kilku często stosowanych w hasłach znaków specjalnych:
! %21
" %22
# %23
$ %24
% %25
& %26
@ %40

Mam nadzieję, że po lekturze tego wpisu poprawna konfiguracja npm nie będzie już dla Ciebie wyzwaniem! Z jakimi innymi drobnymi, acz irytującymi problemami zdarza Ci się zetknąć w pracy?

Komentarze