nvm continua a “dimenticare” il nodo nella nuova sessione del terminale

Usando una nuova sessione di terminale in OS X, nvm dimentica la versione del nodo e non ha valore predefinito:

$ nvm ls :

  .nvm v0.11.12 v0.11.13 

Devo continuare a nvm use v.0.11.13 in ogni sessione:

  .nvm v0.11.12 -> v0.11.13 

Ho provato sia l’installazione di brew , sia lo script di installazione ufficiale.

Il mio .profile per la versione brew:

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

E per lo 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 

Qualche indizio su cosa sto facendo male?

Prova nvm alias default . Per esempio:

$ nvm alias default 0.12.7

Questo imposta la versione di nodo predefinita nella shell. Quindi verifica che la modifica permanga chiudendo la finestra della shell, aprendone una nuova, quindi: node --version

Alias ​​al node stesso per evitare di aggiornare l’alias predefinito insieme agli aggiornamenti della versione del nodo in seguito.

 nvm alias default node 

Per installare l’ultima versione stabile:

 nvm install stable 

Per impostare l’impostazione predefinita sulla versione stabile (anziché su una versione specifica):

 nvm alias default stable 

Per elencare le versioni installate:

 nvm list 

A partire dalla v6.2.0 , assomiglierà a qualcosa:

 $ 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 fa il suo lavoro cambiando la variabile PATH, quindi è necessario assicurarsi di non modificare in qualche modo il PATH in qualcos’altro dopo aver acquistato lo script nvm.sh.

Nel mio caso, nvm.sh veniva chiamato in .bashrc ma poi la variabile PATH veniva aggiornata in .bash_profile, il che causava alla mia sessione la ricerca del nodo di sistema prima del nodo nvm.

Nel mio caso, un altro programma ha aggiunto modifiche PATH a .bashrc

Se l’altro programma ha cambiato il PATH dopo l’inizializzazione di nvm, allora le modifiche al PATH di nvm verrebbero dimenticate e avremmo il nodo di sistema sul nostro PATH (o nessun nodo).

La soluzione era spostare l’installazione di nvm sul fondo di .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" 

Soluzione:

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

(Questo era con bash 4.2.46 su CentOS. Mi sembra un errore in bash, ma potrei sbagliarmi.)

Le soluzioni migliori non sembravano funzionare per me. La mia soluzione è qui sotto:

  1. Disinstallare nvm completamente usando homebrew: brew uninstall nvm
  2. Reinstallare brew install nvm
  3. In Terminale, seguire i passaggi seguenti (questi sono elencati anche quando si installa nvm tramite homebrew):

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

La procedura sopra descritta aggiungerà la directory di lavoro di NVM al tuo percorso $ HOME, copia nvm-exec nella directory di lavoro di NVM e aggiungi a $ HOME / .bashrc, $ HOME / .zshrc o al file di configurazione equivalente della shell. elencato su un’installazione NVM usando homebrew)

Questa domanda ha menzionato per OSX, ma mi è successo nel mio SO Linux. Ho provato ad usare nvm alias default ma per ogni nuova sessione terminale la versione del nodo usato è stata dimenticata. quindi, ecco la soluzione che ho capito.

assicurati di impostare un alias predefinito per la versione del nodo , inserisci il seguente codice in .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 

collegamento della soluzione descrittiva

eseguire questo dopo aver installato qualsiasi versione,

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

Questo comando sta copiando qualsiasi versione del nodo che è triggers tramite nvm nella directory / usr / local / e impostando le autorizzazioni in modo che tutti gli utenti possano accedervi.

Ho trovato un nuovo modo qui. Usare n interattivo Gestisci il tuo Node.js aiuta.

Inoltre, nel caso in cui avessi installato il nodo prima di nvm, controlla ~ / .bash_profile per non avere qualcosa del tipo:

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

Se ce l’hai, commentalo / rimuovilo e nvm dovrebbe iniziare a gestire la versione del nodo predefinito.