Почему я вижу разные версии node и nodejs

Вопрос или проблема

Я выполнил следующие команды для установки стабильной версии node

sudo npm cache clean -f
sudo npm install -g n
sudo npm install -g n

Теперь, когда я запускаю node -v, я вижу v10.0.0, в то время как nodejs -v возвращает v4.2.6. Насколько я знаю, node и nodejs — это одно и то же. Почему я это вижу? Спасибо.

У вас могут быть разные версии node, потому что они были установлены разными способами.

  • Одна установлена из официального дистрибутива: чаще всего команда nodejs предоставляется пакетом (Debian, Ubuntu, …). Этот бинарник устанавливается в /usr/bin/.
  • Бинарник из репозитория npm: когда вы устанавливаете node с помощью команды npm и аргумента -g, пакет устанавливается в систему (доступен для всех пользователей). Этот пакет устанавливается в /usr/local/bin/.

node и nodejs имеют идентичную функциональность, но они разные версии, потому что это два разных пакета в Ubuntu Software. nodejs — это более старая версия пакета apt, а node — более актуальный snap пакет. Большинство пользователей Node.js будут более довольны использованием актуального snap пакета node, потому что он обновляется автоматически и его можно настроить на автоматическое обновление до последней стабильной версии или на отсутствие обновлений, кроме как в рамках конкретного релиза Node.js. Последняя функция предназначена для пользователей Node.js, которым нужно работать с конкретным релизом Node.js. Snap пакет node также поддерживает установку нескольких релизов Node.js, что позволяет пользователю выбирать, какой релиз Node.js использовать для каждого проекта.

Одно важное отличие между node и nodejs заключается в том, что в node встроен npm в snap пакете, тогда как в nodejs npm должен быть установлен отдельно. Поскольку npm в пакете node гораздо более актуален, чем версия npm от apt, рекомендуется использовать более свежую версию npm как для node, так и для nodejs. После установки snap пакета node выполните следующую команду, чтобы включить проверку обновлений npm:

sudo chown -R $USER:$(id -gn $USER) /home/$USER/.config

Для получения дополнительной информации о установке и использовании snap пакета node читайте этот ответ.

Ответ или решение

Почему вы видите разные версии Node и Node.js?

Разница в версиях Node и Node.js, которую вы наблюдаете, часто происходит из-за различных путей установки и пакетов. Давайте подробнее рассмотрим это явление и причины, стоящие за ним.

Что такое Node и Node.js?

Node.js — это серверная среда выполнения JavaScript, которая позволяет запускать JavaScript-код вне браузера. Характерно, что вы можете установить его различными способами, и каждый из методов может приводить к установке разных версий.

Причины различий в версиях Node и Node.js

  1. Установка из официальных репозиториев:

    • Вы, вероятно, установили Node.js из стандартного репозитория вашей операционной системы (например, используя apt в Ubuntu) с помощью команды sudo apt install nodejs. Этот пакет предоставляет команду nodejs, которая отвечает за запуск среды выполнения Node, но зачастую она может быть устаревшей (например, версия 4.2.6).
  2. Установка из npm:

    • В вашем случае, когда вы выполнили команды по установке Node через npm (sudo npm install -g n), вы установили версию Node из npm-репозитория. Эта версия (например, v10.0.0) может находиться в пути /usr/local/bin и указывать на более новую реализацию, чем старый пакет nodejs.
  3. Разные пакеты и конфликты:

    • В системе могут одновременно существовать разные версии Node (node) и Node.js (nodejs), так как они чаще всего являются отдельными пакетами. В частности, node может представлять более свежую версию, которая также встроена в snap-пакет и имеет более удобные функции для обновлений.

Отличия между node и nodejs

  • Версии: Как уже упоминалось, node и nodejs могут идти с разными версиями в зависимости от используемого пакета.
  • Поддержка npm: В некоторых дистрибутивах npm может требовать отдельной установки для nodejs, в то время как в новом пакете node он идет "в комплекте". Это также означает, что версия npm может различаться.
  • Обновления: Snap-пакеты (node) позволяют автоматически обновлять установленные версии. Это полезно для разработчиков, которым нужна наиболее актуальная версия Node.js.

Рекомендации

  1. Проверьте пути установки: Вы можете использовать команды which node и which nodejs, чтобы узнать, из каких директорий берутся исполняемые файлы. Это поможет вам увидеть, какие пути установлены в вашей системе.

  2. Измените команду: Если вы хотите, чтобы команда node указывала на более новую версию, вы можете создать символическую ссылку:

    sudo ln -sf /usr/local/bin/node /usr/bin/nodejs
  3. Рекомендуемая установка: Для современных проектов рекомендуется рассмотреть возможность использования менеджера версий, такого как nvm, чтобы легко переключаться между различными версиями Node.js без путаницы.

Заключение

Итак, основная причина, по которой вы наблюдаете разные версии Node и Node.js, заключается в том, что они, скорее всего, установлены из различных источников (репозиториев, npm и т.д.). Если вы хотите избежать путаницы, рассмотрите использование менеджеров версий или установку только одной из версий, которая соответствует вашим требованиям. Наличие актуальной версии и соответствующего инструментария, такого как npm, значительно упростит разработку.

Оцените материал
Добавить комментарий

Капча загружается...