nvm продолжает "забывать" узел в новой терминальной сессии
при использовании нового терминального сеанса в OS X,nvm
забывает версию узла и по умолчанию ничего:
$ nvm ls
:
.nvm
v0.11.12
v0.11.13
я должен продолжать бить nvm use v.0.11.13
в каждой сессии:
.nvm
v0.11.12
-> v0.11.13
я пробовал как brew
установить, а также официальный скрипт установки.
мой .profile
для версии brew:
#nvm
export NVM_DIR=~/.nvm
source $(brew --prefix nvm)/nvm.sh
и для install.sh сценарий:
$ 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
любой ключ к тому, что я делаю неправильно?
10 ответов:
попробовать
nvm alias default
. Например:
$ nvm alias default 0.12.7
это устанавливает версию узла по умолчанию в вашей оболочке. Затем убедитесь, что изменение сохраняется, закрыв окно оболочки, открыв новое, а затем:
node --version
псевдоним
node
сам, чтобы избежать обновления псевдонима по умолчанию вместе с обновлением версии узла позже.nvm alias default node
установить последнюю стабильную версию:
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)
nvm выполняет свою работу, изменяя переменную PATH, поэтому вам нужно убедиться, что вы каким-то образом не меняете свой путь на что-то другое после поиска nvm.sh сценарий.
в моем случае, nvm.sh его вызывали на допрос .bashrc, но затем переменная PATH обновлялась .bash_profile, который вызвал мой сеанс, чтобы найти системный узел перед узлом nvm.
в моем случае, другая программа добавила
PATH
изменения.bashrc
если другая программа изменила
PATH
после инициализация nvm, затем nvmPATH
изменения будут забыты, и мы получим системный узел на нашем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
(это с Баша 4.2.46 на CentOS. Мне кажется, что ошибка в bash, но я могу ошибаться.)
лучшие решения, похоже, не работают для меня. Мое решение находится ниже:
- удалить 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 с использованием homebrew)
этот вопрос упоминался для OSX, но это случилось со мной в моей ОС linux. Я пробовал использовать
nvm alias default <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
запустить после установки любой версии,
n=$(which node);n=${n%/bin/node}; chmod -R 755 $n/bin/*; sudo cp -r $n/{bin,lib,share} /usr/local
эта команда копирует любую версию узла, который у вас активен через nvm, в каталог /usr/local/ и устанавливает разрешения, чтобы все пользователи могли получить к ним доступ.
Я нашел здесь новый способ. Используя
n
Интерактивное Управление Узлом.js помогает.