core code helper

Як встановити Node.js і npm через nvm на Linux, macOS і Windows

Яку версію Node.js обрати, nvm на Linux і macOS, fnm на Windows, перемикання версій, .nvmrc і помилки nvm command not found та EACCES.

0 імпортували Імпортувати собі

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 встановлює кілька версій Node.js у ~/.nvm і перемикає між ними; кожен проєкт вказує свою версію у файлі .nvmrc

Встановлення 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. По черзі:

  1. Відкрийте новий термінал.
  2. Перевірте, що у ~/.bashrc або ~/.zshrc є рядки з NVM_DIR. Якщо немає — додайте вручну:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
  1. На 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 Інші способи входу