Гид по технологиям

Как понизить версию Node.js с помощью NVM

5 min read DevOps Обновлено 26 Dec 2025
Понизить версию Node.js с помощью NVM
Понизить версию Node.js с помощью NVM

Человек держит наклейку Node.js

Зачем понижать версию Node.js

Новые релизы Node.js приносят улучшения и функции, но иногда вводят обратимо несовместимые изменения (breaking changes), которые ломают сборку или runtime ваших приложений. Понижение версии (downgrade) помогает вернуть совместимость с зависимостями, сборочными инструментами и бинарными модулями.

Коротко:

  • LTS — долгосрочная поддержка, более стабильна для продакшена.
  • Current — содержит последние фичи, но может ломать зависимости.

Важно выбрать версию, совместимую с вашими основными библиотеками и сборочными инструментами.

Установка NVM и проверка окружения

NVM (Node Version Manager) — рекомендованный инструмент для установки и переключения версий Node.js. Он позволяет иметь разные версии Node.js на одной машине и изолировать наборы глобальных пакетов для каждой версии.

  1. Установите NVM, следуя официальным инструкциям в репозитории NVM на GitHub для вашей ОС. Для Windows есть отдельный проект nvm-windows.
  2. После установки проверьте доступность NVM командой:
# Показывает версию nvm
nvm --version

Если команда не срабатывает, закройте и откройте терминал или перезапустите систему. На Windows запустите командную строку от имени администратора при необходимости.

Important: на Windows NVM реализован другим проектом (nvm-windows). Команды похожи, но поведение и путь установки отличаются.

Установка и переключение на конкретную версию Node.js

Пример — установка и переключение на Node.js 17.9.1.

  1. Установите версию:
nvm install 17.9.1
  1. Переключитесь на неё:
nvm use 17.9.1
  1. Убедитесь, что версия активна:
node -v
# Ожидаемый вывод:
v17.9.1

Если вы используете nvm-windows, те же команды обычно работают, но проверьте документацию конкретного клиента.

Просмотр установленных версий и переключение

Чтобы увидеть все версии Node.js, установленные через NVM:

nvm ls

Пример вывода:

->     v17.9.1
        v18.12.1
        v20.1.0

Звёздочка или стрелка указывает текущую активную версию. Для переключения используйте nvm use <версия>.

Алиасы для удобства

Если вы часто используете одну и ту же версию, создайте короткий алиас:

# Создать алиас default17 для версии 17.9.1
nvm alias default17 17.9.1

# Переключиться с помощью алиаса
nvm use default17

# Удалить алиас
nvm unalias default17

Алиасы экономят ввод команд и уменьшают вероятность ошибки при вводе номера версии.

Мини-методология: безопасный процесс понижения версии

Следуйте этому шаблону, чтобы понизить версию без сюрпризов:

  1. Зафиксируйте текущие артефакты.
    • Сохраните package.json и package-lock.json/yarn.lock.
    • Зафиксируйте текущую Node-версию (node -v) и список глобальных пакетов (npm ls -g –depth=0).
  2. Создайте тестовую ветку в репозитории и отделите staging окружение.
  3. Установите нужную версию через NVM и выполните npm ci или yarn install.
  4. Прогоните тесты и сборку локально и в CI.
  5. Если всё ок, примените на staging, прогоните smoke tests, затем деплой в прод.
  6. Подготовьте rollback: скрипт nvm use и шаги восстановления зависимостей.

Когда NVM не поможет или даст сбой

Counterexamples — случаи, когда понижение через NVM может не решить проблему:

  • Проблема связана с несовместимостью исходного кода с синтаксисом ранней версии V8 (например, новые синтаксические фичи, которые не транспилируются).
  • Установленные бинарные модули (native addons) требуют пересборки и зависят от ABI Node.js; иногда нужно пересобрать модули (npm rebuild).
  • CI/CD образы и контейнеры используют встроенную версию Node.js (в Dockerfile) — в этом случае нужно обновить Dockerfile или сборочный образ.
  • Глобально установленные инструменты, завязанные на определённую версию Node, могут вести себя иначе.

Если NVM не помогает, рассмотрите альтернативы ниже.

Альтернативные подходы

  • n — другой простой менеджер версий Node (UNIX-подобные системы).
  • Docker-контейнеры с нужной версией Node — воспроизводимый способ изолировать среду.
  • Официальные бинарные сборки или дистрибутивы Node.js для конкретной ОС.
  • Использование версий в CI (например, actions/setup-node, setup-node в GitHub Actions) для изоляции сборки.

Каждый подход имеет свои преимущества: Docker даёт полную изоляцию окружения, n прост для интерактивного использования.

Управление пакетами и совместимость

  • После переключения версии всегда делайте чистую установку зависимостей: npm ci или rm -rf node_modules && npm install.
  • Если проект использует native addons, выполните npm rebuild или пересборку в окружении новой версии.
  • Проверьте конфигурацию движков в package.json (поле engines) и добавьте ограничение версии, если это необходимо:
"engines": {
  "node": ">=16 <19"
}

Это помогает коллегам и CI увидеть требуемую версию.

Ролe-базированные чек-листы

Developer:

  • Зафиксировать package-lock.json/yarn.lock
  • Установить нужную версию через nvm install
  • Запустить unit и интеграционные тесты

DevOps/Инженер CI:

  • Обновить Dockerfile или образ сборки
  • Прописать версию Node в конфигурации CI
  • Проверить артефакты сборки в staging

QA:

  • Провести smoke и regression тесты на staging
  • Проверить функциональность, зависящую от нативных модулей

Тимлид:

  • Утвердить downgrade в план релиза
  • Подготовить rollback-план

Шпаргалка команд (cheat sheet)

# Проверить версию NVM
nvm --version

# Установить Node.js
nvm install 17.9.1

# Переключиться на версию
nvm use 17.9.1

# Показать установленные версии
nvm ls

# Создать алиас
nvm alias default17 17.9.1

# Удалить алиас
nvm unalias default17

# Проверить текущую версию Node
node -v

# Пересобрать нативные модули
npm rebuild

Отладка и план отката

Troubleshooting шаги:

  • Если сборка падает — запустите npm ci и посмотрите вывод ошибок. Частая проблема — несовместимые бинарные модули.
  • Выполните npm rebuild и перезапустите тесты.
  • Сравните окружения (node -p “process.versions”) между рабочим и проблемным инстансом.

Rollback:

  1. Выполните nvm use .
  2. Удалите node_modules и установите зависимости заново.
  3. Откатите изменения в CI/Dockerfile если они были внесены.

Совместимость и миграционные советы

  • Добавьте поле engines в package.json, чтобы зафиксировать поддерживаемые версии Node.
  • Обновляйте зависимости постепенно: сначала minor/patch, затем major.
  • Для крупных обновлений проверяйте changelog зависимостей и Node.js.

Notes: всегда тестируйте на staging с тем же окружением, что и продакшен.

Краткий глоссарий

NVM — менеджер версий Node.js. LTS — релиз с долгосрочной поддержкой. Downgrade — понижение версии ПО. Native addon — бинарный модуль Node.js, компилируемый под конкретную версию V8.

Резюме

Понижать версию Node.js безопасно, если следовать последовательности: зафиксировать состояния, установить нужную версию через NVM, пересобрать зависимости и прогнать тесты в изолированной среде (staging). Алиасы и cheat sheet ускоряют работу, а plan отката минимизирует риски. Если NVM не решает проблему, рассмотрите Docker или другие менеджеры версий.

Important: всегда прогоняйте полную тестовую матрицу и проверяйте нативные модули после изменения версии Node.

Ключевые шаги:

  • Установить NVM, проверить nvm –version
  • nvm install <версия>, nvm use <версия>
  • npm ci и npm rebuild при необходимости
  • Прогнать тесты и деплой через staging
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Загрузка и удаление контактов в Facebook
Социальные сети

Загрузка и удаление контактов в Facebook

Как сделать ссылку на другой лист в Excel
Excel

Как сделать ссылку на другой лист в Excel

Как найти серийный номер устройства
Устройства

Как найти серийный номер устройства

Резервирование Downloads, Music и Videos в OneDrive
Инструкции

Резервирование Downloads, Music и Videos в OneDrive

Конвертация MOV в MP4 на iPhone
How-to

Конвертация MOV в MP4 на iPhone

Как увидеть и удалить данные Google
Конфиденциальность

Как увидеть и удалить данные Google