Вопрос или проблема
Я выполнил следующие команды для установки стабильной версии 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
-
Установка из официальных репозиториев:
- Вы, вероятно, установили Node.js из стандартного репозитория вашей операционной системы (например, используя
apt
в Ubuntu) с помощью командыsudo apt install nodejs
. Этот пакет предоставляет командуnodejs
, которая отвечает за запуск среды выполнения Node, но зачастую она может быть устаревшей (например, версия 4.2.6).
- Вы, вероятно, установили Node.js из стандартного репозитория вашей операционной системы (например, используя
-
Установка из npm:
- В вашем случае, когда вы выполнили команды по установке Node через npm (
sudo npm install -g n
), вы установили версию Node из npm-репозитория. Эта версия (например, v10.0.0) может находиться в пути/usr/local/bin
и указывать на более новую реализацию, чем старый пакетnodejs
.
- В вашем случае, когда вы выполнили команды по установке Node через npm (
-
Разные пакеты и конфликты:
- В системе могут одновременно существовать разные версии Node (node) и Node.js (nodejs), так как они чаще всего являются отдельными пакетами. В частности,
node
может представлять более свежую версию, которая также встроена в snap-пакет и имеет более удобные функции для обновлений.
- В системе могут одновременно существовать разные версии Node (node) и Node.js (nodejs), так как они чаще всего являются отдельными пакетами. В частности,
Отличия между node и nodejs
- Версии: Как уже упоминалось, node и nodejs могут идти с разными версиями в зависимости от используемого пакета.
- Поддержка npm: В некоторых дистрибутивах npm может требовать отдельной установки для nodejs, в то время как в новом пакете node он идет "в комплекте". Это также означает, что версия npm может различаться.
- Обновления: Snap-пакеты (node) позволяют автоматически обновлять установленные версии. Это полезно для разработчиков, которым нужна наиболее актуальная версия Node.js.
Рекомендации
-
Проверьте пути установки: Вы можете использовать команды
which node
иwhich nodejs
, чтобы узнать, из каких директорий берутся исполняемые файлы. Это поможет вам увидеть, какие пути установлены в вашей системе. -
Измените команду: Если вы хотите, чтобы команда
node
указывала на более новую версию, вы можете создать символическую ссылку:sudo ln -sf /usr/local/bin/node /usr/bin/nodejs
-
Рекомендуемая установка: Для современных проектов рекомендуется рассмотреть возможность использования менеджера версий, такого как
nvm
, чтобы легко переключаться между различными версиями Node.js без путаницы.
Заключение
Итак, основная причина, по которой вы наблюдаете разные версии Node и Node.js, заключается в том, что они, скорее всего, установлены из различных источников (репозиториев, npm и т.д.). Если вы хотите избежать путаницы, рассмотрите использование менеджеров версий или установку только одной из версий, которая соответствует вашим требованиям. Наличие актуальной версии и соответствующего инструментария, такого как npm, значительно упростит разработку.