Як встановити Node.js і npm через nvm на Linux, macOS і Windows
Яку версію Node.js обрати, nvm на Linux і macOS, fnm на Windows, перемикання версій, .nvmrc і помилки nvm command not found та EACCES.
Node.js запускає JavaScript поза браузером: на ньому пишуть бекенд, CLI-утиліти, збирають фронтенд і запускають тести. Встановити його можна десятком способів, але більшість із них згодом створює проблеми: застаріла версія з apt, глобальні пакети, які вимагають sudo, і проєкти, яким потрібні різні версії Node.
Цей посібник — про спосіб, яким користується більшість розробників: менеджер версій nvm (на Windows — fnm). Він ставить Node у вашу домашню папку, перемикає версії однією командою і не потребує прав адміністратора.
АктуальністьЖовтень 2026 року: Node.js 24 (Krypton) — актуальна LTS-версія, 22 (Jod) — ще підтримується, 26 — гілка Current, яка наприкінці жовтня переходить у LTS. Node.js 20 більше не підтримується.
Яку версію Node.js обрати
Нова мажорна версія Node.js виходить двічі на рік. Парні версії (22, 24, 26) стають LTS — довгостроково підтримуваними: близько 30 місяців виправлень помилок і безпеки. Непарні живуть лише кілька місяців.
| Сценарій | Версія |
|---|---|
| Продакшен, навчання, нові проєкти | актуальна LTS (зараз 24) |
| Хочете спробувати нові можливості | Current (26) |
| Наявний проєкт | та, що в .nvmrc, package.json (engines) або Dockerfile |
Не беріть Node із системного apt
sudo apt install nodejsв Ubuntu зазвичай дає версію, яка відстає на кілька мажорних релізів, а глобальні пакети з ним вимагаютьsudo. Для розробки краще nvm. На серверах, де Node ставлять один раз і назавжди, підійдуть і офіційні збірки — або запуск у Docker з образомnode:24.
Як працює nvm
nvm (Node Version Manager) завантажує версії Node.js у папку ~/.nvm/versions/node/ і підміняє шлях до команд node і npm у поточному терміналі. Кожна версія живе окремо — разом зі своїми глобальними пакетами.
Встановлення nvm на Linux і macOS
Крок 1. Запустіть інсталятор
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.8/install.sh | bashЯкщо curl немає — через wget:
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.8/install.sh | bashСкрипт клонує nvm у ~/.nvm і додає кілька рядків завантаження у ваш профіль оболонки (~/.bashrc, ~/.zshrc або ~/.profile).
macOS: спершу створіть ~/.zshrcНа свіжому Mac файлу
~/.zshrcможе не бути, і тоді інсталятору нікуди записати налаштування. Перед встановленням виконайтеtouch ~/.zshrc. Також потрібні Xcode Command Line Tools:xcode-select --install.
Крок 2. Перезавантажте оболонку
Закрийте й відкрийте термінал знову або виконайте:
source ~/.bashrc # для zsh: source ~/.zshrcПеревірка:
command -v nvmМає вивести nvm. Зверніть увагу: which nvm нічого не покаже, і це нормально — nvm це функція оболонки, а не окрема програма.
Крок 3. Встановіть Node.js
nvm install --lts # актуальна LTS-версія
nvm alias default 'lts/*' # використовувати її в нових терміналах
node -v
npm -vГотово: node і npm працюють без sudo.
Керування версіями
nvm ls # встановлені версії
nvm ls-remote --lts # доступні LTS-версії
nvm install 22 # встановити найсвіжішу 22.x
nvm use 22 # перемкнутися на 22 у поточному терміналі
nvm alias default 24 # версія за замовчуванням для нових терміналів
nvm uninstall 20 # видалити версіюnvm use діє лише в поточному вікні терміналу. Відкриєте нове — там буде версія з nvm alias default.
.nvmrc: версія для проєкту
Покладіть у корінь проєкту файл .nvmrc з номером версії:
echo "24" > .nvmrcТепер будь-хто в команді заходить у папку проєкту й виконує:
nvm install # поставить версію з .nvmrc, якщо її ще немає
nvm use # перемкнеться на неїТой самий файл читають CI-системи, наприклад дія actions/setup-node у GitHub Actions (параметр node-version-file: .nvmrc). Так локальна машина й CI гарантовано працюють на одній версії.
Глобальні пакети при оновленні Node
Глобальні пакети (npm install -g ...) прив'язані до конкретної версії Node. Щоб перенести їх при переході на нову версію:
nvm install 24 --reinstall-packages-from=22Встановлення Node.js на Windows
Оригінальний nvm на Windows не працює. Є кілька хороших варіантів.
Варіант 1: fnm (рекомендуємо для розробки)
fnm — швидкий менеджер версій, сумісний із файлами .nvmrc:
winget install Schniz.fnmДодайте ініціалізацію fnm у профіль PowerShell. Відкрийте його командою notepad $PROFILE (якщо файлу немає, спершу створіть: New-Item -Path $PROFILE -Force) і додайте рядок:
fnm env --use-on-cd --shell powershell | Out-String | Invoke-ExpressionПерезапустіть термінал і встановіть Node:
fnm install 24
fnm default 24
node -vПрапорець --use-on-cd автоматично перемикає версію, коли ви заходите в папку з .nvmrc.
Варіант 2: офіційний інсталятор
На nodejs.org завантажте .msi для LTS-версії й пройдіть майстер встановлення. Це найпростіше, але перемикати версії доведеться перевстановленням.
Варіант 3: WSL
Якщо ви працюєте у WSL (а для бекенду й DevOps це часто зручніше), ставте nvm усередині Ubuntu у WSL за інструкцією для Linux вище.
npm не запускається в PowerShellЯкщо бачите
npm.ps1 cannot be loaded because running scripts is disabled on this system, дозвольте локальні скрипти для свого користувача:Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Перші кроки з npm
npm (Node Package Manager) встановлюється разом із Node. Створимо проєкт:
mkdir hello-api && cd hello-api
npm init -y # створює package.json
npm install express # залежність застосунку
npm install -D nodemon # залежність лише для розробкиСтворіть файл index.js:
const express = require('express');
const app = express();
app.get('/', (req, res) => res.json({ status: 'ok', node: process.version }));
app.listen(3000, () => console.log('http://localhost:3000'));Запуск:
node index.jsЩо варто знати про npm з першого дня:
| Команда / файл | Навіщо |
|---|---|
package.json |
опис проєкту, залежності й скрипти |
package-lock.json |
точні версії всіх залежностей — комітьте його |
node_modules/ |
встановлені пакети — не комітьте, додайте в .gitignore |
npm ci |
чисте встановлення строго за lock-файлом (для CI і серверів) |
npm run <скрипт> |
запустити скрипт із розділу scripts |
npx <утиліта> |
запустити утиліту без глобального встановлення |
npm outdated |
які пакети мають новіші версії |
npm audit |
відомі вразливості в залежностях |
Альтернативні менеджери пакетів pnpm і yarn ставляться як звичайний глобальний пакет: npm install -g pnpm.
Типові помилки
nvm: command not found
Профіль оболонки не підхопив nvm. По черзі:
- Відкрийте новий термінал.
- Перевірте, що у
~/.bashrcабо~/.zshrcє рядки зNVM_DIR. Якщо немає — додайте вручну:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"- На macOS переконайтеся, що файл
~/.zshrcіснує (див. попередження вище).
EACCES: permission denied при npm install -g
npm ERR! Error: EACCES: permission denied, mkdir '/usr/lib/node_modules/...'Node встановлено в системну папку (через apt чи інсталятор), і npm не має прав туди писати. Не використовуйте sudo npm install -g — так у системі з'являються файли root, які потім заважають. Правильне рішення — встановити Node через nvm: він живе у вашій домашній папці.
node: command not found у cron, CI або systemd
nvm завантажується лише в інтерактивних оболонках, тож cron і systemd про нього не знають. Варіанти: вказуйте повний шлях (~/.nvm/versions/node/v24.../bin/node, точний шлях покаже nvm which 24), на серверах ставте Node зі збірок без nvm, а в CI — використовуйте actions/setup-node.
Різні версії в терміналі й у редакторі
VS Code бере PATH з оболонки, з якої його запустили. Перезапустіть редактор після nvm alias default, а в налаштуваннях проєкту вкажіть потрібну версію через .nvmrc.
npm WARN EBADENGINE Unsupported engine
Пакет вимагає іншу версію Node, ніж у вас. Подивіться поле engines у повідомленні й перемкніться: nvm install 24 && nvm use 24.
Часті питання
Чи потрібен nvm на продакшен-сервері?
Не обов'язково. На сервері з одним застосунком простіше поставити одну LTS-версію з офіційних збірок або запускати застосунок у Docker (FROM node:24-alpine). nvm найкорисніший на машині розробника з кількома проєктами.
npm, pnpm чи yarn? npm іде разом із Node і цілком достатній. pnpm швидший і економить місце на диску завдяки спільному сховищу пакетів. Головне — один менеджер на проєкт і закомічений lock-файл.
Як оновити Node.js до нової версії?
nvm install --lts поставить нову LTS поруч зі старою. Перенесіть глобальні пакети (--reinstall-packages-from), оновіть .nvmrc у проєктах і nvm alias default, а стару версію видаліть, коли переконаєтеся, що все працює.
Як дізнатися, де лежить node?
which node (Linux, macOS) або where node (Windows). З nvm шлях вестиме в ~/.nvm/versions/node/....
Що далі
Node.js встановлено — далі варто розібратися з асинхронністю, модулями й побудовою API. Статті на ці теми збираються в рубриках Node.js і JavaScript.
Збережіть статтю собі
Увійдіть, щоб імпортувати її у власні нотатки, відмічати вивчене, ставити лайки й питати спільноту. Реєстрація безкоштовна: вхід через Google займає кілька секунд.
Увійти через Google Інші способи входу