На данный момент я работаю удаленно с сервером. У меня есть удаленный доступ к репозиторию проекта на нем (сервере). Мне необходимо установить в этом проекте node.js хотя бы версии 16. В папке с проектом установлена версия node.js 10.24.1, однако каким-то образом был обновлен npm до последней на данный момент версии. Таким образом образовался конфликт и я не могу проводить какие-либо операции с npm. Я запросила root права, чтобы можно было переустановить node.js. Я установила версию 16 с помощью nvm (также мной установленном). Однако при входе снова под изначальными данными (без root), оказалось, что в репозитории все еще установлена node 10. При проверке командой which node
получаю ответ /usr/bin/node
А если мы заходим под root правами, то ответ на ту же команду /root/.nvm/versions/node/v16.18.1/bin/node
Каким образом можно решить создавшуюся проблему?
Если у вас есть nvm то смотрите: nvm list
какие версии стоят
nvm install - ставите нужную если надо
nvm alias default 16.14.2
nvm use
и задаете какую нужно использовать по дефолту
Вообще вопрос задан странно если в репе используется 10 версия, а на вм 16 стоит и вы хотите запустить легаси код на новой версии ноды?
Виктор Л, суть в том, что проект не собирался с нуля, он базировался на старых технологиях, с которыми работали разработчики. Я занималась миграцией данного проекта (проект на vue). Теперь мне необходимо обновить реп, но в связи с тем, что на сервере конфликт версий npm и node (конфликт именно в самом репозитории и при входе не под рут правами), я не могу заново пересобрать проект. Если заходим на сервер под рут правами, то там node стоит нормально. Переключается на разные версии (с пом npm) и т.д. Вот только в репе с проектом этого не видно. Словно node установлена только для root.
Для правильного вопроса надо знать половину ответа
Установите node через nvm от того пользователя, под которым она будет использоваться. Установка выполняется в каталог пользователя и не требует прав root'а.
При попытке установить nvm для данного пользователя всплывает данная ошибка
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 15916 100 15916 0 0 52872 0 --:--:-- --:--:-- --:--:-- 52877
=> nvm is already installed in /home/wmn-calendar/.nvm, trying to update using git
=> => Compressing and cleaning up git repository
=> nvm source string already in /home/wmn-calendar/.bashrc
=> bash_completion source string already in /home/wmn-calendar/.bashrc
ERROR: npm v9.6.6 is known not to run on Node.js v10.24.1. This version of npm supports the following node
versions: `^14.17.0 || ^16.13.0 || >=18.0.0`. You can find the latest version at https://nodejs.org/.
ERROR:
/usr/lib/node_modules/npm/lib/utils/exit-handler.js:19
const hasLoadedNpm = npm?.config.loaded
^
SyntaxError: Unexpected token .
at Module._compile (internal/modules/cjs/loader.js:723:23)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Module.require (internal/modules/cjs/loader.js:692:17)
at require (internal/modules/cjs/helpers.js:25:18)
at module.exports (/usr/lib/node_modules/npm/lib/cli.js:42:23)
at Object.<anonymous> (/usr/lib/node_modules/npm/bin/npm-cli.js:2:25)
at Module._compile (internal/modules/cjs/loader.js:778:30)
=> Close and reopen your terminal to start using nvm or run the following to use it now:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
Да, это и есть основная проблема. Nvm на рут правах у меня есть, если я захожу под другим юзером - nvm установить не могу. Npm запустить не могу. Поэтому и не могу понять, как переустановить этот nodejs
Rsa97 , а если сейчас при попытке установить nvm у меня выбрасывает ошибку, что с npm проблемы - не будет ли потом, после удаления всех указанных вами файлов, данная команда запрашивать файлы npm, которых у меня не будет? Или это уже не будет иметь значения, есть npm или нет?
Да, возможно было установлено пакетом. Простите мне мое незнание, но...что есть симплинк и как его сделать. И, да, я так понимаю это все нужно пробовать не по root правам?
1. Другие пользователи (кроме root) не смогут достучаться сюда /root/.nvm/versions/node/v16.18.1/bin/
2. Чтобы изменить приоритет поиска программы - добавьте после установки nodejs в директории пользователя в PATH в /home/user/.bashrc на первое место /$user/.nvm/versions/node/v16.18.1/bin/
Тогда сначала node будет искаться там а затем уже в /usr/bin/
Или используйте механизм update-my-alternatives для выставления нужных приоритетов и создания алиасов
Это выглядит здраво. Но, так как я полный нуб в данных аспектах, может есть ссылки на какие-либо решения, документацию или что-то подобное, дабы я могла на что-то ориентироваться в исправлении данного затыка предложенным способом?