nvm mantém o nó “esquecendo” na nova session de terminal

Ao usar uma nova session de terminal no OS X, o nvm esquece a versão do nó e assume como padrão nada:

$ nvm ls :

  .nvm v0.11.12 v0.11.13 

Eu tenho que continuar batendo nvm use v.0.11.13 em todas as sessões:

  .nvm v0.11.12 -> v0.11.13 

Eu tentei tanto a instalação de brew , bem como o script de instalação oficial.

Meu .profile para a versão brew:

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

E para o script 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 

Alguma pista do que estou fazendo errado?

Tente o nvm alias default . Por exemplo:

$ nvm alias default 0.12.7

Isso define a versão do nó padrão no seu shell. Em seguida, verifique se a alteração persiste fechando a janela do shell, abrindo uma nova e, em seguida: node --version

Alias ​​para criar um node próprio para evitar a atualização do alias padrão junto com as atualizações de versão do nó mais adiante.

 nvm alias default node 

Para instalar a versão estável mais recente:

 nvm install stable 

Para definir o padrão para a versão estável (em vez de uma versão específica):

 nvm alias default stable 

Para listar as versões instaladas:

 nvm list 

A partir da v6.2.0 , será algo como:

 $ 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) 

O nvm faz o seu trabalho alterando a variável PATH, então você precisa ter certeza de que não está de alguma forma mudando o seu PATH para outra coisa depois de obter o script nvm.sh.

No meu caso, nvm.sh estava sendo chamado em .bashrc, mas a variável PATH estava sendo atualizada em .bash_profile, o que fazia com que minha session localizasse o nó do sistema antes do nó nvm.

No meu caso, outro programa havia adicionado alterações no PATH para .bashrc

Se o outro programa alterasse o PATH após a boot do nvm, então as mudanças do PATH do nvm seriam esquecidas, e nós obteríamos o nó do sistema no nosso PATH (ou nenhum nó).

A solução foi mover a configuração nvm para o fundo do .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" 

Solução:

 ### 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 

(Isso foi com o bash 4.2.46 no CentOS. Parece-me um bug no bash, mas posso estar enganado.)

As melhores soluções não parecem funcionar para mim. Minha solução está abaixo:

  1. Desinstalar nvm completamente usando homebrew: brew uninstall nvm
  2. Reinstalar brew install nvm
  3. No Terminal, siga os passos abaixo (estes também são listados ao instalar o nvm via homebrew):

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

As etapas descritas acima adicionarão o diretório de trabalho da NVM ao seu caminho $ HOME, copiarão nvm-exec para o diretório de trabalho da NVM e adicionará a $ HOME / .bashrc, $ HOME / .zshrc, ou o arquivo de configuração equivalente da sua shell. listado em uma instalação NVM usando homebrew)

Esta questão foi mencionada para o OSX, mas aconteceu comigo no meu sistema operacional Linux. Eu tentei usar nvm alias default mas para cada nova session de terminal a versão do nó usado foi esquecida. Então, aqui está a solução que eu descobri.

Certifique-se de definir um alias padrão para a versão do nó , coloque o seguinte código em .bashrc e 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 

link de solução descritiva

execute isto depois de instalar qualquer versão,

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

Este comando está copiando qualquer versão do nó que você tenha ativado via nvm para o diretório / usr / local / e configurando as permissions para que todos os usuários possam acessá-las.

Eu encontrei um novo caminho aqui. Usando n Gerenciar interativamente o seu Node.js ajuda.

Também no caso de você ter o instalado antes do nvm, verifique em seu ~ / .bash_profile para não ter algo como:

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

Se você tiver, comente / remova e o nvm deve começar a manipular a versão do nó padrão.