Вопрос или проблема
Версия node.js в Ubuntu 24.10 – v14.21.3. Чтобы использовать React (с vite), требуется последняя или, по крайней мере, гораздо более поздняя версия. Я пробовал различные способы обновления node через репозиторий пакетов, и все казалось прошло хорошо, включая сообщение о том, что установлена версия node 22. Однако команда node -v
все еще возвращала v14.21.3, и попытка запустить
npm run dev
для сервера разработки react по-прежнему возвращала ошибку из-за версии node.
Затем я обновил node, используя nvm (nvm install --lts
) и затем nvm use --lts
Это работает, и node -v
возвращает v22.14.0 (npm v11.1.0)
Однако версия node остается на уровне 22 только до закрытия терминала. Есть ли способ сделать изменение на версию 22 постоянным?
Ubuntu 24.10 имеет nodejs v20.16.0
, ваша проблема совсем не связана с дистрибутивом.
Вы изменили ваш $PATH
, добавив в него каталог /home/<user>/.nvm/versions/node/v14.21.3/bin
, из-за которого вы видите старую версию nodejs. Откуда взялся этот JavaScript, это вопрос, на который можете ответить только вы. Но у вас есть два возможных решения:
- Удалите этот каталог из
$PATH
- Или, по альтернативе, удалите установленный через nvm
node
. Вероятно, вы добавили каталог, чтобы использовать некоторые утилиты, установленные с помощьюnvm
, но затем также установили тамnodejs
, поэтому он используется вместо дистрибутивного. Вы можете просто его удалить.
Ответ или решение
Установка последней версии Node.js на Ubuntu 24.10 может показаться неочевидной задачей из-за конфликтов версий и путей, возникающих при использовании различных средств управления версиями, таких как nvm
. В этом ответе я раскрою все аспекты, чтобы устранить проблемы с версиями Node.js, а также подробно объясню, как сделать так, чтобы новая версия оставалась постоянной даже после закрытия терминала.
Теория
Сначала рассмотрим, почему возникают проблемы с версиями Node.js. Возможно, что по умолчанию в вашей системе в переменной окружения $PATH
указан путь, который указывает на старую версию Node.js. Например, если старые версии Node.js были установлены через пакетный менеджер или вручную размещены в какой-то из директорий, их пути могут оставаться в переменной $PATH
.
Управление версиями через NVM
Чтобы управлять различными версиями Node.js, часто используют nvm
(Node Version Manager). Это утилита, позволяющая устанавливать и переключаться между разными версиями Node.js в пользовательском пространстве, что удобно для различных проектов с различными потребностями в версиях.
Пример команды для установки последней LTS (Long Term Support) версии Node.js с помощью nvm
:
nvm install --lts
nvm use --lts
Однако, как вы заметили, такие изменения сохраняются только в текущей сессии терминала. После его закрытия ваши настройки версии будут сброшены к системной по умолчанию. Это аспект, который нужно учитывать и впереди мы рассмотрим, как его решить.
Пример
Проблема в том, что команда node -v
все еще возвращает v14.21.3
, несмотря на мнимый успех установки нового Node.js v22 с помощью пакетного менеджера. Сначала разберемся, как очистить вашу систему от несовместимых или устаревших версий, а затем удержать выбранную версию постоянной.
-
Удаление неправильных путей:
Проверьте ваш файл
.bashrc
,.zshrc
или.profile
(в зависимости от шелла, который вы используете) на наличие устаревших путей. В частности, удалите или прокомментируйте строки, которые добавляют в$PATH
директорию со старым Node.js, например:export PATH="/home/<user>/.nvm/versions/node/v14.21.3/bin:$PATH"
-
Удаление старых версий Node.js:
Убедитесь, что старые версии Node.js удалены из вашей системы:
sudo apt-get remove nodejs
-
Корректное использование NVM:
Теперь, когда старые версии удалены, убедитесь, что NVM загружается в вашем файле конфигурации оболочки (
.bashrc
или.zshrc
, например) и выбирается нужная версия Node.js:export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm nvm use --lts
Эти строки обеспечат автоматическую загрузку NVM и переход на последнюю LTS-версию при каждом запуске нового терминала.
Применение
Теперь, когда мы освободились от проблемных мест, прецептируем рабочее решение:
-
Постоянное назначение версии:
Изменения, сделанные в файлах конфигурации шелла, гарантируют, что каждый раз при запуске нового терминального окна ваша система будет автоматически переключаться на последнюю LTS-версию Node.js посредством NVM.
-
Проверка и тестирование:
После всех изменений закройте и откройте терминал и выполните следующую команду, чтобы убедиться, что нужная версия Node.js:
node -v
Вы должны увидеть желаемую версию, например,
v22.14.0
. -
Работа с проектами:
Теперь вы можете без проблем запускать
npm run dev
или любые другие команды, связанные с исполнением Node.js в вашем проекте React с использованием Vite.
Заключение
Представленный подход обеспечивает долговременное решение проблем, связанных с управлением версиями Node.js на Ubuntu 24.10. Убедитесь, что ваш файл конфигурации оболочки настроен правильно для автоматической загрузки и установки нужной версии Node.js, и любые установленные вами версии через NVM не конфликтуют с системными или устаревшими версиями. Таким образом, вы получаете стабильность и удобство при работе над вашими проектами.