nvm continue à “oublier” le nœud dans la nouvelle session de terminal

Lors de l’utilisation d’une nouvelle session de terminal dans OS X, nvm oublie la version du noeud et ne prend rien par défaut:

$ nvm ls :

  .nvm v0.11.12 v0.11.13 

Je dois continuer à nvm use v.0.11.13 à chaque session:

  .nvm v0.11.12 -> v0.11.13 

J’ai essayé à la fois l’installation de l’ brew et le script d’installation officiel.

Mon .profile pour la version armsée:

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

Et pour le 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 

Un indice sur ce que je fais mal?

Essayez nvm alias default . Par exemple:

$ nvm alias default 0.12.7

Cela définit la version de noeud par défaut dans votre shell. Ensuite, vérifiez que la modification persiste en fermant la fenêtre du shell, en en ouvrant une nouvelle, puis: node --version

Alias ​​sur le node lui-même pour éviter de mettre à jour l’alias par défaut avec les mises à jour de version de noeud ultérieures.

 nvm alias default node 

Pour installer la version stable la plus récente:

 nvm install stable 

Pour définir la version par défaut de la version stable (au lieu d’une version spécifique):

 nvm alias default stable 

Pour répertorier les versions installées:

 nvm list 

A partir de la v6.2.0 , cela ressemblera à:

 $ 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 fait son travail en modifiant la variable PATH, vous devez donc vous assurer que vous ne changez pas votre PATH en quelque chose d’autre après avoir trouvé le script nvm.sh.

Dans mon cas, nvm.sh était appelé dans .bashrc, mais la variable PATH était mise à jour dans .bash_profile, ce qui entraînait la découverte du noeud système par le noeud avant le noeud nvm.

Dans mon cas, un autre programme avait ajouté des modifications PATH à .bashrc

Si l’autre programme modifiait le PATH après l’initialisation de nvm, alors les modifications PATH de nvm seraient oubliées et nous obtiendrions le nœud système sur notre PATH (ou aucun nœud).

La solution consistait à déplacer la configuration nvm vers le bas de .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" 

Solution:

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

(C’était avec bash 4.2.46 sur CentOS. Cela me semble être un bogue dans bash, mais je peux me tromper.)

Les solutions les mieux notées ne semblaient pas fonctionner pour moi. Ma solution est la suivante:

  1. Désinstallez complètement nvm en utilisant homebrew: brew uninstall nvm
  2. Réinstallez brew install nvm
  3. Dans Terminal, suivez les étapes ci-dessous (celles-ci sont également répertoriées lors de l’installation de nvm via homebrew):

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

Les étapes décrites ci-dessus ajoutent le répertoire de travail de NVM à votre chemin $ HOME, copient nvm-exec dans le répertoire de travail de NVM et ajoute à $ HOME / .bashrc, $ HOME / .zshrc ou au fichier de configuration équivalent de votre shell. répertorié sur une installation NVM utilisant homebrew)

Cette question a été mentionnée pour l’OSX, mais cela m’est arrivé dans mon OS Linux. J’ai essayé d’utiliser l’ nvm alias default mais pour chaque nouvelle session de terminal, la version de noeud utilisée a été oubliée. Alors, voici la solution que j’ai trouvée.

Assurez-vous de définir un alias par défaut pour la version de noeud , placez le code suivant dans .bashrc et 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 

lien descriptif de la solution

exécutez ceci après avoir installé n’importe quelle version,

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

Cette commande copie la version de nœud active via nvm dans le répertoire / usr / local / et définit les permissions pour que tous les utilisateurs puissent y accéder.

J’ai trouvé une nouvelle voie ici. Utiliser n Interactively Manage Votre aide Node.js.

De même, si vous avez installé node avant nvm, vérifiez dans votre fichier ~ / .bash_profile pour ne pas avoir quelque chose comme:

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

Si vous l’avez, commentez / supprimez-le et nvm devrait commencer à gérer la version de noeud par défaut.