
Studio Kalmus
Autor
Niewłaściwa wersja Node.js lub npm to jedno z najczęstszych źródeł frustrujących błędów podczas pracy nad projektami JavaScript - od nieudanych instalacji zależności, przez błędy kompilacji, po luki bezpieczeństwa w środowisku produkcyjnym. W tym przewodniku pokazujemy krok po kroku, jak sprawdzić zainstalowaną wersję Node.js i npm na Windows, macOS i Linux, jak interpretować numery wersji zgodnie z zasadami Semantic Versioning oraz jak profesjonalnie zarządzać wieloma wersjami Node.js za pomocą nvm, fnm i Volta. Całość aktualizujemy na 2026 rok, uwzględniając aktualny harmonogram wsparcia Node.js.
W dynamicznym świecie web developmentu, gdzie frameworki i narzędzia zmieniają się w zawrotnym tempie, utrzymanie spójnego środowiska deweloperskiego jest podstawą stabilnej pracy. Programiści regularnie borykają się z błędami wynikającymi z niekompatybilności wersji Node.js lub menedżera pakietów npm - jeden projekt wymaga starszej wersji z powodu przestarzałych zależności, inny korzysta z najnowszych funkcji języka JavaScript dostępnych tylko w aktualnych wydaniach. Różnice te prowadzą do nieprzewidzianych problemów: od nieudanych instalacji pakietów, przez błędy podczas budowania aplikacji, po krytyczne luki bezpieczeństwa w środowisku produkcyjnym.
Ten problem dotyka nie tylko początkujących - również doświadczone zespoły tracą godziny na debugowanie błędów, które w rzeczywistości wynikają z rozjazdu wersji między środowiskiem lokalnym, serwerem CI/CD a produkcją. Poniższy przewodnik pozwala raz na zawsze uporządkować ten temat.
Node.js i npm: czym są i dlaczego wersje mają znaczenie
Node.js to środowisko uruchomieniowe JavaScript oparte na silniku V8 (tym samym, który napędza przeglądarkę Chrome), które pozwala wykonywać kod JavaScript poza przeglądarką - najczęściej po stronie serwera. Dzięki temu programiści mogą używać jednego języka zarówno do warstwy frontendowej, jak i backendowej, co znacząco usprawnia proces tworzenia aplikacji webowych. Node.js działa asynchronicznie i jest sterowany zdarzeniami (event-driven), co czyni go szczególnie wydajnym w obsłudze wielu równoczesnych połączeń - to dlatego jest fundamentem tak wielu nowoczesnych frameworków i narzędzi budujących.
npm (Node Package Manager) to domyślny menedżer pakietów dla Node.js i jednocześnie największy na świecie rejestr otwartego oprogramowania, z ponad dwoma milionami paczek dostępnych publicznie. Pozwala programistom instalować, udostępniać i zarządzać zależnościami projektu bez pisania każdej funkcjonalności od zera. To ogromne przyspieszenie pracy, ale niesie ze sobą konieczność pilnowania kompatybilności - zarówno między pakietami, jak i między samym npm a wersją Node.js, na której jest uruchamiany.
Numeracja wersji Node.js i npm opiera się na standardzie Semantic Versioning (SemVer), czyli formacie MAJOR.MINOR.PATCH. Każdy segment numeru wersji niesie inną informację:
- MAJOR (np. 20.0.0 → 22.0.0) - zmiany niekompatybilne wstecz. Aktualizacja może wymagać poprawek w kodzie lub zależnościach.
- MINOR (np. 22.1.0 → 22.2.0) - nowe funkcje, kompatybilne wstecz. Bezpieczne do aktualizacji w większości przypadków.
- PATCH (np. 22.2.0 → 22.2.1) - poprawki błędów i łatki bezpieczeństwa, w pełni kompatybilne wstecz.
Praca na przestarzałej wersji Node.js lub npm oznacza realne ryzyko: znane luki bezpieczeństwa, których nikt już nie łata, brak wsparcia dla nowych pakietów wymagających świeższego środowiska uruchomieniowego oraz utratę dostępu do optymalizacji wydajności wprowadzanych w kolejnych wydaniach. Z drugiej strony praca na zbyt nowej, niesprawdzonej wersji może oznaczać niestabilność w projektach produkcyjnych. Dlatego świadome zarządzanie wersją to nie kwestia wygody, lecz bezpieczeństwa i przewidywalności całego projektu.
Jak sprawdzić wersję Node.js i npm - krok po kroku
Sprawdzenie zainstalowanej wersji zajmuje kilka sekund i wygląda identycznie na Windows, macOS i Linux - różni się jedynie sposób otwarcia terminala. Aby sprawdzić wersję Node.js, wpisz w terminalu jedną z poniższych komend:
node -v
node --version
Obie zwrócą ten sam wynik, np. v22.14.0. Aby sprawdzić wersję npm, użyj analogicznie:
npm -v
npm --version
Warto też jednym poleceniem sprawdzić pełne środowisko wykonawcze - architekturę procesora, system operacyjny oraz wersje powiązanych narzędzi:
node -p "process.versions"
Komenda ta wypisze nie tylko wersję Node.js, ale też silnika V8, OpenSSL i innych wbudowanych komponentów, co bywa przydatne przy diagnozowaniu problemów ze zgodnością natywnych modułów.
Windows
- Otwórz Wiersz Polecenia (CMD), PowerShell lub Windows Terminal - wpisz „cmd” lub „PowerShell” w wyszukiwarce Windows i naciśnij Enter.
- Wpisz
node -vi naciśnij Enter. - Wpisz
npm -vi naciśnij Enter.
macOS
- Otwórz Terminal - znajdziesz go w folderze Aplikacje/Narzędzia lub przez Spotlight (Cmd + Spacja, wpisz „Terminal”).
- Wpisz
node -vi naciśnij Enter. - Wpisz
npm -vi naciśnij Enter.
Linux
- Otwórz terminal - zwykle dostępny w menu aplikacji lub przez skrót Ctrl+Alt+T.
- Wpisz
node -vi naciśnij Enter. - Wpisz
npm -vi naciśnij Enter.
Jeśli po wpisaniu komendy otrzymasz komunikat „command not found” lub „’node’ nie jest rozpoznawany jako polecenie wewnętrzne”, oznacza to najczęściej jedną z dwóch sytuacji: Node.js nie jest zainstalowany, albo ścieżka do jego pliku wykonywalnego nie znajduje się w zmiennej środowiskowej PATH. Rozwiązaniem jest pobranie instalatora z oficjalnej strony nodejs.org (na Windows pamiętaj o zaznaczeniu opcji „Add to PATH” podczas instalacji) lub - co zalecamy każdemu, kto pracuje na więcej niż jednym projekcie - instalacja przez menedżer wersji opisany w kolejnej sekcji.
Którą wersję Node.js wybrać w 2026 roku - LTS kontra Current
Node.js publikuje nowe wersje MAJOR co pół roku - parzyste numery (np. 22, 24) trafiają do cyklu LTS (Long Term Support) i otrzymują wieloletnie wsparcie, a nieparzyste (np. 23, 25) są wydaniami Current, przeznaczonymi do testowania nowości i eksperymentowania, ale bez długoterminowego wsparcia. Pełny, aktualny harmonogram końca wsparcia poszczególnych wersji znajdziesz zawsze na oficjalnej stronie Node.js Release Schedule.
W praktyce dla projektów produkcyjnych rekomendujemy zawsze najnowszą aktywną wersję LTS - w połowie 2026 roku oznacza to Node.js 22 lub 24, w zależności od tego, kiedy dany projekt był rozpoczęty i jakie ma zależności. Wersja Current nadaje się do eksperymentów, testowania nowych funkcji języka i bibliotek przygotowujących się pod przyszłe wydania LTS, ale nie powinna trafiać na serwery produkcyjne klientów - ryzyko niestabilności jest tam po prostu zbyt wysokie.
Zaawansowane zarządzanie wersjami: nvm, fnm i Volta
Wraz z rosnącym doświadczeniem szybko okazuje się, że różne projekty wymagają różnych wersji Node.js jednocześnie na tym samym komputerze - starszy projekt klienta może działać na Node.js 18, podczas gdy nowy projekt korzysta z najnowszych funkcji dostępnych dopiero w Node.js 24. Ręczne odinstalowywanie i instalowanie Node.js za każdym razem, gdy przełączasz się między projektami, jest nieefektywne i podatne na błędy. Do tego służą menedżery wersji Node.js.
NVM (Node Version Manager) to najpopularniejszy i najdłużej rozwijany menedżer wersji, dostępny na oficjalnym repozytorium na GitHubie. Działa jako skrypt powłoki instalowany dla macOS, Linuksa oraz Windows Subsystem for Linux (WSL). Oferuje intuicyjne komendy: nvm install <wersja> do instalacji, nvm use <wersja> do przełączenia oraz nvm ls do wylistowania zainstalowanych wersji. NVM potrafi też automatycznie przełączać wersję na podstawie pliku .nvmrc umieszczonego w katalogu projektu, co jest szczególnie wygodne w zespołach.
fnm (Fast Node Manager), dostępny na github.com/Schniz/fnm, to alternatywa napisana w języku Rust, ceniona przede wszystkim za prędkość działania i natywne wsparcie dla Windows bez konieczności WSL. Działa jako samodzielna binarka, którą można zainstalować przez Homebrew, Scoop lub skrypt instalacyjny, i - podobnie jak nvm - obsługuje automatyczne przełączanie wersji na podstawie plików .nvmrc oraz .node-version.
Volta, dostępna na volta.sh, to nowsze narzędzie, które idzie o krok dalej - pozwala „przypiąć” (pin) konkretną wersję Node.js i npm do każdego projektu z osobna, zapisując je bezpośrednio w pliku package.json. Dzięki temu każdy członek zespołu, klonując repozytorium, automatycznie dostaje właściwą wersję środowiska bez ręcznego przełączania - to rozwiązanie szczególnie polecane w zespołach pracujących nad wieloma projektami równolegle.
| Cecha | nvm | fnm | Volta |
|---|---|---|---|
| Platformy | macOS, Linux, WSL | macOS, Linux, Windows | macOS, Linux, Windows |
| Szybkość działania | Dobra | Bardzo szybka (Rust) | Bardzo szybka (Rust) |
| Instalacja | Skrypt powłoki (curl/wget) | Binarka (curl, brew, scoop) | Instalator / curl |
| Automatyczne przełączanie | Na podstawie .nvmrc | Na podstawie .nvmrc, .node-version | Wersja przypięta w package.json, bez ręcznego „use” |
| Najlepszy dla | Użytkowników macOS/Linux ceniących dojrzałe, sprawdzone narzędzie | Osób ceniących szybkość i natywne wsparcie Windows | Zespołów, które chcą pełnej powtarzalności środowiska w każdym projekcie |
Wybór menedżera zależy od indywidualnych preferencji i charakteru pracy. Dla zespołów pracujących na wielu projektach jednocześnie i ceniących powtarzalność środowiska najlepiej sprawdzi się Volta. Dla programistów pracujących głównie na macOS lub Linuksie, którzy cenią dojrzałość i ogromną społeczność, dobrym wyborem pozostaje nvm. Jeśli priorytetem jest szybkość i wygodna obsługa na Windows bez WSL, warto rozważyć fnm.
Najczęstsze problemy z wersjami i jak je naprawić
Nawet po poprawnej instalacji Node.js i npm zdarzają się sytuacje, w których wersje generują problemy. Poniżej najczęstsze scenariusze spotykane w codziennej pracy:
- Błąd „engine” podczas instalacji pakietu - npm ostrzega, że zainstalowana wersja Node.js nie spełnia wymagań pakietu zdefiniowanych w polu
enginesjegopackage.json. Rozwiązanie: sprawdź wymaganą wersję komendąnpm info <pakiet> enginesi przełącz się na nią menedżerem wersji. - Różne wersje Node.js na komputerze dewelopera i na serwerze produkcyjnym - typowa przyczyna błędów „u mnie działa”. Rozwiązanie: zapisz wymaganą wersję w pliku
.nvmrclub w poluengineswpackage.jsoni egzekwuj ją w pipeline CI/CD. - npm zainstalowany niezależnie od Node.js pokazuje niezgodną wersję - zdarza się po ręcznych instalacjach z różnych źródeł. Rozwiązanie: zainstaluj npm ponownie komendą
npm install -g npm@latestlub, jeszcze lepiej, przejdź w całości na menedżer wersji, który synchronizuje obie wersje automatycznie. - Uprawnienia (permission denied) przy globalnej instalacji pakietów - typowe dla instalacji systemowej Node.js na Linuksie/macOS bez menedżera wersji. Rozwiązanie: nie używaj
sudo npm install -g- zainstaluj Node.js przez nvm/fnm/Volta, dzięki czemu katalogi instalacyjne należą do użytkownika, a nie do roota. - Po instalacji nowej wersji Node.js znikają wcześniej zainstalowane pakiety globalne - to normalne zachowanie menedżerów wersji, ponieważ każda wersja Node.js ma własny, oddzielny zestaw pakietów globalnych. Rozwiązanie: po przełączeniu na nową wersję zainstaluj ponownie potrzebne narzędzia (np.
npm install -g typescript) albo w nvm skorzystaj z komendynvm install <wersja> --reinstall-packages-from=<poprzednia-wersja>, która automatycznie przenosi listę pakietów globalnych. - CI/CD buduje projekt na innej wersji Node.js niż lokalne środowisko - częsta przyczyna błędów widocznych wyłącznie na serwerze budowania. Rozwiązanie: w konfiguracji pipeline’u (np. GitHub Actions) jawnie wskaż wersję Node.js zgodną z plikiem
.nvmrcprojektu zamiast polegać na domyślnej wersji obrazu bazowego.
Najczęściej zadawane pytania
Czy muszę mieć Node.js i npm, aby tworzyć strony internetowe?
Nie zawsze, ale są kluczowe dla większości nowoczesnych frameworków frontendowych (React, Vue, Angular, Next.js, Svelte) oraz dla budowania aplikacji backendowych w JavaScript. Bez Node.js nie uruchomisz większości dzisiejszych narzędzi deweloperskich, bundlerów i kompilatorów. Proste strony statyczne można tworzyć bez tego środowiska, ale w miarę rozwoju projektu Node.js i npm szybko stają się niezbędne.
Komenda node -v zwraca „command not found”. Co robię źle?
Najczęściej oznacza to, że Node.js nie jest zainstalowany albo ścieżka do jego pliku wykonywalnego nie znajduje się w zmiennej środowiskowej PATH. Sprawdź, czy instalacja przebiegła poprawnie na nodejs.org, na Windows upewnij się, że zaznaczono opcję „Add to PATH”, zrestartuj terminal po instalacji, a jeśli korzystasz z menedżera wersji - upewnij się, że aktywowałeś wybraną wersję komendą nvm use, fnm use lub odpowiednikiem w Volcie.
Jaka jest różnica między node -v a npm -v?
node -v pokazuje wersję samego środowiska uruchomieniowego Node.js, natomiast npm -v pokazuje wersję menedżera pakietów npm, który jest instalowany razem z Node.js, ale rozwija się jako osobny projekt z własnym numerem wersji. Kompatybilne pary wersji można sprawdzić w tabeli wydań na nodejs.org lub w dokumentacji docs.npmjs.com.
Jak zaktualizować npm bez zmiany wersji Node.js?
Wystarczy komenda npm install -g npm@latest, która aktualizuje sam menedżer pakietów niezależnie od zainstalowanej wersji Node.js. Warto jednak upewnić się, że nowa wersja npm jest kompatybilna z Twoją wersją Node.js - sprawdzisz to w dokumentacji projektu.
Jakie są ryzyka używania przestarzałych wersji Node.js i npm?
Przede wszystkim luki bezpieczeństwa - starsze wersje przestają otrzymywać łatki po zakończeniu wsparcia (End-of-Life), co naraża aplikacje na znane, udokumentowane podatności. Dodatkowo pojawia się brak kompatybilności z nowymi pakietami wymagającymi świeższego środowiska, utrata dostępu do optymalizacji wydajności oraz coraz trudniejsze wsparcie społeczności, która skupia się na aktualnych wydaniach. Regularne sprawdzanie harmonogramu wsparcia na nodejs.org i planowanie aktualizacji to element podstawowej higieny technicznej każdego projektu.

