Nvm продолжает "забывать" node в новом сеансе терминала

После использования нового сеанса терминала в OS X nvm забывает версию node и по умолчанию ничего:

$ nvm ls:

         .nvm
     v0.11.12
     v0.11.13

Мне нужно продолжать бить nvm use v.0.11.13 в каждом сеансе:

         .nvm
     v0.11.12
->   v0.11.13

Я пробовал установку brew, а также официальную установку script.

Мой .profile для версии brew:

#nvm
export NVM_DIR=~/.nvm
source $(brew --prefix nvm)/nvm.sh

И для install.sh script:

$ curl https://raw.githubusercontent.com/creationix/nvm/v0.10.0/install.sh | bash

#nvm
export NVM_DIR="/Users/farhad/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm

Любой ключ к тому, что я делаю неправильно?

Ответ 1

Попробуйте nvm alias default. Например:

$ nvm alias default 0.12.7

Это устанавливает версию node по умолчанию в вашей оболочке. Затем убедитесь, что это изменение сохраняется, закрывая окно оболочки, открывая новое, а затем: node --version

Ответ 2

Псевдоним <node, чтобы не обновлять псевдоним по умолчанию вместе с обновлением версии node позже.

nvm alias default node

Ответ 3

Чтобы установить последнюю стабильную версию:

nvm install stable

Чтобы установить по умолчанию стабильную версию (вместо конкретной версии):

nvm alias default stable

Чтобы просмотреть установленные версии:

nvm list

По состоянию на v6.2.0 он будет выглядеть примерно так:

$ nvm list
         v4.4.2
->       v6.2.0
default -> stable (-> v6.2.0)
node -> stable (-> v6.2.0) (default)
stable -> 6.2 (-> v6.2.0) (default)
iojs -> N/A (default)

Ответ 4

nvm выполняет свою работу, изменяя переменную PATH, поэтому вам нужно убедиться, что вы не каким-то образом изменяете свою PATH на что-то еще после поиска nvm.sh script.

В моем случае nvm.sh вызывался в .bashrc, но затем переменная PATH обновлялась в .bash_profile, которая заставила мой сеанс найти систему node до nvm node.

Ответ 5

В моем случае другая программа добавила изменения PATH в .bashrc

Если бы другая программа изменила PATH после инициализации nvm, то изменения nvm PATH будут забыты, и мы получим системный узел в нашем PATH (или не узел).

Решением было перенести установку nvm в конец .bashrc

### BAD .bashrc ###

# NVM initialisation
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm

# Some other program adding to the PATH:
export PATH="$ANT_ROOT:$PATH"

Решение:

### GOOD .bashrc ###

# Some other program adding to the PATH:
export PATH="$ANT_ROOT:$PATH"

# NVM initialisation
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm

(Это было с bash 4.2.46 на CentOS. Мне кажется, что это ошибка в bash, но я могу ошибаться.)

Ответ 6

Самые популярные решения, похоже, не работают для меня. Мое решение ниже:

  • Удалить nvm полностью с помощью homebrew: brew uninstall nvm
  • Переустановите brew install nvm
  • В терминале выполните следующие действия: ниже (они также перечислены при установке nvm через homebrew):

    mkdir ~/.nvm cp $(brew --prefix nvm)/nvm-exec ~/.nvm/ export NVM_DIR=~/.nvm source $(brew --prefix nvm)/nvm.sh

Шаги, описанные выше, добавят рабочий каталог NVM к вашему пути $HOME, скопируют nvm-exec в рабочий каталог NVM и добавят в $HOME/.bashrc, $HOME/.zshrc или ваш файл конфигурации, эквивалентный оболочке (снова взяты из того, что указано на установке NVM с использованием доморощенного)

Ответ 7

Если вы все перепробовали, не повезло, вы можете попробовать это: _

1 → Удалить NVM

rm -rf ~/.nvm

2 → Удалить зависимости npm, следуя этому

3 → Установить NVM

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash

4 → Установить конфигурацию ~/.bash_profile

Запустите sudo nano ~/.bash_profile

Скопируйте и вставьте после этого

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

5 → CONTROL + X сохранить изменения

6 → Беги . ~/.bash_profile . ~/.bash_profile

7 → Теперь у вас должен быть установлен nvm на вашем компьютере, для установки узла запустите nvm install v7.8.0 это будет версия узла по умолчанию или вы можете установить любую версию узла

Ответ 8

Этот вопрос упоминается для OSX, но это случилось со мной в ОС Linux. Я попытался использовать nvm alias default <version>, но для каждого нового сеанса терминала была забыта используемая версия node. поэтому, вот решение, которое я понял.

обязательно установите псевдоним по умолчанию для node version, поместите следующий код в .bashrc и source .bashrc.

export NVM_DIR="/home/bonnie/.nvm"
## If the file exists and is not empty
if [ -s "$NVM_DIR/nvm.sh" ]; then
    ## Source it
    source "$NVM_DIR/nvm.sh"
fi
NODE_DEFAULT_VERSION=$(<"$NVM_DIR/alias/default")
export PATH="$NVM_DIR/versions/node/$NODE_DEFAULT_VERSION/bin":$PATH

описательная ссылка на решение

Ответ 9

запустите это после установки любой версии,

n=$(which node);n=${n%/bin/node}; chmod -R 755 $n/bin/*; sudo cp -r $n/{bin,lib,share} /usr/local

Эта команда копирует любую версию node, которую вы активировали через nvm, в каталог/usr/local/и устанавливаете разрешения, чтобы все пользователи могли получить к ним доступ.

Ответ 11

nvm install 10.14 nvm use будет nvm use эту версию для текущего сеанса оболочки, но не всегда будет устанавливать ее по умолчанию для будущих сессий, как и следовало ожидать. Версия узла, которую вы получаете в новом сеансе оболочки, определяется nvm alias default. nvm install, что nvm install будет устанавливать псевдоним по умолчанию, только если он еще не установлен. Чтобы получить ожидаемое поведение, сделайте это:

nvm alias default ''; nvm install 10.14

Это обеспечит загрузку этой версии, ее использование для текущего сеанса и установку по умолчанию для будущих сеансов.

Ответ 12

Если у вас также есть SDKMAN...

Каким-то образом SDKMAN конфликтовал с моим NVM. Если вы в своем уме с этим и не можете понять, я просто исправил это, проигнорировав "ЭТО ДОЛЖНО БЫТЬ В КОНЦЕ ФАЙЛА..." из SDKMAN и поместив строки NVM после него.

#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
export SDKMAN_DIR="/Users/myname/.sdkman"
[[ -s "/Users/myname/.sdkman/bin/sdkman-init.sh" ]] && source "/Users/myname/.sdkman/bin/sdkman-init.sh"

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

Ответ 13

После долгого конфликта с этой проблемой, я нашел, как это исправить. Вот пошаговое решение проблемы:

  • Откройте терминал и установите инструменты разработчика командной строки:

    xcode-select --install

  • Нажмите Ввод

  • Установите последнюю версию NVM:

    cd ~/

  • Нажмите Ввод

    git clone https://github.com/creationix/nvm.git.nvm

  • Нажмите Ввод
  • Если вы уже создали папку .nvm ранее, вы увидите следующее сообщение об ошибке:

    fatal: destination path '.nvm' already exists and is not an empty directory.

    Иначе, вы увидите процесс клонирования, пока он не завершится.

  • Проверьте последнюю версию NVM:

    cd ~/.nvm

  • Нажмите Ввод

    git checkout v0.34.0

    Вы получите ответ, похожий на:

    HEAD is now at 3d9c31d v0.34.0

    Версия может отличаться в разных системах.

    ls

  • Нажмите Ввод

    . nvm.sh

  • Нажмите Ввод

    nvm list

  • Нажмите Ввод

    Вы увидите различные версии узлов, установленные на вашем компьютере, могут быть некоторые ошибки, не обращайте на них внимания.

    nvm ls-remote | tail -n9

  • Нажмите Ввод

    nvm list

  • Откройте bash с помощью vim:

    vim ~/.bash_profile

  • В редакторе vim нажмите: i чтобы войти в INSERT mode и начать новую строку. Если у вас возникли ошибки при редактировании, нажмите клавишу ESC а затем :q! выйти без сохранения.

    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

  • Нажмите клавишу ESC когда вы закончите редактирование файла (вы увидите, что режим INSERT исчезнет).

  • Нажмите :wq чтобы сохранить файл.
  • Нажмите Ввод

    nvm ls-remote | tail -n9

  • Нажмите enter и установите новейшую версию nvm:

    nvm install 12.6.0

  • Когда процесс завершится, вы увидите: Now using node v12.6.0 (npm v6.9.0)

  • Вы можете проверить успешность установки, нажав:

    node -v или npm -v, он должен показать вам версии nvm и npm, установленные в вашей системе.

Основано на: Как установить последнюю версию Node Manager Manager NVM и установить узел и NPM в macOS Mac OS X

Ответ 14

$ nvm alias default {NODE_VERSION}

когда мы используем вышеупомянутую команду, обновите только версию узла, но npm все еще использует старую версию.

Вот еще одно решение для обновления обоих node и npm, в моем случае я хочу использовать узел 8.9.4, и я использовал приведенную ниже команду.

$ nvm use default 8.9.4

И команда возвращает результат.

Now using node v8.9.4 (npm v5.6.0)

Ответ 15

Также, если у вас есть node, установленный до nvm, проверьте ~/.bash_profile, чтобы не было что-то вроде:

export PATH=/bin:/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:$PATH

Если у вас есть это, прокомментируйте/удалите его, а nvm должен начать обработку версии node по умолчанию.