nvm conserve le nœud «oubliant» dans une nouvelle session de terminal

546

Lors de l'utilisation d'une nouvelle session de terminal dans OS X, nvmoublie la version du nœud et ne prend par défaut rien:

$ nvm ls:

         .nvm
     v0.11.12
     v0.11.13

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

         .nvm
     v0.11.12
->   v0.11.13

J'ai essayé à la fois l' brewinstallation et le script d'installation officiel.

Ma .profileversion brew:

#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

Une idée de ce que je fais mal?

frhd
la source
1
Je veux juste ajouter ceci ici - Assurez-vous d'exporter depuis .bash_profileet non votre.bashrc
James111

Réponses:

1181

Essayez nvm alias default. Par exemple:

$ nvm alias default 0.12.7

Cela définit la version du nœud par défaut dans votre shell. Vérifiez ensuite que le changement persiste en fermant la fenêtre du shell, en ouvrant une nouvelle, puis: node --version

dylants
la source
11
N'est-ce pas déjà le travail de l'utilisation de NVM? Après $ nvm alias default 0.11.13et $ nvm use 0.11.12, je reçois node --version = 0.11.12. Pourtant, dans une nouvelle session, le nœud a disparu à nouveau. Dans Debian, je n'ai pas du tout ce problème.
2014
4
Ok, Ive a eu une faute de frappe: nvm alias defaul X. Avec la bonne utilisation, cela fonctionne réellement. Donc, le flux de travail serait nvm install Xalors nvm alias default X, je suppose. Merci d'avoir aidé!
2014
21
J'ai eu le même problème et c'est parce que j'exportais l' NVM_DIRafter nvm.sh. Assurez-vous d'exporter l' NVM_DIRavant.
maxwell2022
11
Notez que nvm alias defaultcela ne définit pas la version du nœud pour l'environnement actuel, juste pour tous les nouveaux.
ericsoco
28
Si cela ne fonctionne pas, assurez-vous que vous .bash_profile(ou .bashrcquoi que ce soit) vous n'avez rien modifié PATHaprèssource xx/nvm.sh
goodmanship
85

Alias ​​à nodelui-même pour éviter de mettre à jour l'alias par défaut avec les mises à jour de version de nœud plus tard.

nvm alias default node
Tarun
la source
2
! AVERTISSEMENT: la version 'nœud' n'existe pas. par défaut -> nœud (-> N / A)?
House3272
6
Et alors node alias default stable?
Pierre Henry
1
Je ne pense pas que tu veuilles l'utiliser stable. D'après les documents nvm: "stable: cet alias est obsolète et ne s'applique vraiment qu'au nœud v0.12 et versions antérieures. Actuellement, il s'agit d'un alias pour le nœud".
pherris
1
À qui nodeest-ce par défaut? Le Node installé et utilisé par NVM dans le shell actuel, ou le Node éventuellement installé sur le système par le package d'installation de Node ou Homebrew etc?
2540625 du
7
(mainteneur nvm ici) node(et stable, mais tout ce qui est publié dans semver est stable, c'est donc un mot inutile) utilise la dernière version disponible. Pour les commandes locales, la dernière installée; pour les commandes à distance, dernière version disponible.
LJHarb
40

Pour installer la dernière version stable:

nvm install stable

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

nvm alias default stable

Pour répertorier les versions installées:

nvm list

À partir de v6.2.0, cela ressemblera à quelque chose comme:

$ 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)
ohho
la source
Cela a très bien fonctionné et la suggestion d'utiliser nvm listpermet aux utilisateurs de visualiser ce qui se passe avec leur versioning. Merci!
Solvitieg
30

Dans mon cas, un autre programme a ajouté des PATHmodifications à.bashrc

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

La solution consistait à déplacer la configuration nvm au 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 bug dans bash, mais je peux me tromper.)

joeytwiddle
la source
1
Cela m'a aidé! La valeur par défaut était bloquée.
Redsandro
1
Donnez une médaille à ce gars! J'ai eu un chargement supplémentaire d'autres fichiers * rc dans mon zshrc après l'exportation NVM_DIR, cela m'a rendu fou. Je vous remercie!
bobbytables
Je vous remercie! Cela me rendait fou.
Arbres
27

nvm fait son travail en changeant la variable PATH, vous devez donc vous assurer que vous ne changez pas votre chemin en quelque chose d'autre après avoir obtenu 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 a amené ma session à trouver le nœud système avant le nœud nvm.

Jeff Mikels
la source
1
comment puis-je inspecter cela? Je soupçonne que c'est le cas.
Mild Fuzz
c'était mon cas merci! je mettais l'exportation en haut sur mon fichier .zshrc, il suffit de le déplacer vers le bas et le problème a été résolu
Alejandro Silva
C'était mon cas. La solution consistait à déplacer l'entrée NVM ~ / .bash_profile à la fin du fichier + set nvm alias defaultet nvm useà la version dont j'avais besoin.
Eugene Tartakovsky
C'était la solution pour moi. Déplacé ce qui suit au bas de .bashrc: export NVM_DIR="$HOME/.nvm"puis. "/usr/local/opt/nvm/nvm.sh"
asmiller
10

Les solutions les mieux notées ne semblaient pas fonctionner pour moi. Ma solution est ci-dessous:

  1. Désinstallez nvm complètement en utilisant homebrew:brew uninstall nvm
  2. Réinstaller brew install nvm
  3. Dans Terminal, suivez les étapes ci-dessous (elles 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 ajouteront le répertoire de travail de NVM à votre chemin $ HOME, copiez nvm-exec dans le répertoire de travail de NVM et ajouteront à $ HOME / .bashrc, $ HOME / .zshrc ou au fichier de configuration équivalent de votre shell. (À nouveau tiré de ce qui est répertorié sur une installation NVM utilisant homebrew)

Joe
la source
7

Si vous avez tout essayé mais pas de chance, vous pouvez essayer ceci: _

1 -> Désinstaller NVM

rm -rf ~/.nvm

2 -> Supprimer les dépendances npm en suivant ceci

3 -> Installer NVM

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

4 -> Définir la ~/.bash_profileconfiguration

Courir sudo nano ~/.bash_profile

Copiez et collez en suivant

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 + Xenregistrer les modifications

6 -> Exécuter . ~/.bash_profile

7 -> Maintenant, vous devriez avoir nvminstallé sur votre machine, pour installer le nœud, nvm install v7.8.0ce sera la version par défaut du nœud ou vous pouvez installer n'importe quelle version du nœud

Gabbar
la source
1
Merci beaucoup! C'était la seule solution qui définissait également le chemin du nœud dans bash et fonctionnait pour moi. Je viens d'utiliser "nvm install node" pour installer la dernière version du nœud plutôt que d'utiliser "nvm install v7.8.0"
user3492435
5

Cette question a été mentionnée pour l'OSX, mais elle m'est arrivée dans mon système d'exploitation Linux. J'ai essayé d'utiliser, nvm alias default <version>mais pour chaque nouvelle session de terminal, la version du nœud utilisé était oubliée. voici donc la solution que j'ai trouvée.

assurez-vous de définir un alias par défaut pour la version du nœud , mettez 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 de solution descriptive

souparno majumder
la source
1
Juste une note, cela repose sur l'inclusion de la vdans la version lors du réglage de la télécommande. Par exemple v4.2.4au lieu de 4.2.4.
vaughan
4

Par nvm install 10.14exemple, nvm usecette version sera utilisée pour la session shell actuelle, mais elle ne la définira pas toujours comme valeur par défaut pour les sessions futures, comme vous vous en doutez. La version du nœud que vous obtenez dans une nouvelle session shell est déterminée par nvm alias default. Confusément, nvm installne définira l'alias par défaut que s'il n'est pas déjà défini. Pour obtenir le comportement attendu, procédez comme suit:

nvm alias default ''; nvm install 10.14

Cela garantira que cette version est téléchargée, l'utiliser pour la session en cours et la définir comme valeur par défaut pour les sessions futures.

Denis Howe
la source
3

exécutez cela après avoir installé une 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 du nœud que vous avez active via nvm dans le répertoire / usr / local / et définit les autorisations afin que tous les utilisateurs puissent y accéder.

Mouafa Ahmed
la source
Je recommanderais d'utiliser &&s au lieu de ;s dans cette commande. Si le whichne parvient pas à trouver le nœud, nous ne voulons pas passer à chmod /bin/*!
joeytwiddle
3

J'ai trouvé une nouvelle façon ici. L'utilisation de la n gestion interactive de Node.js vous aide.

Harshit Garg
la source
Oui! Je ne sais pas si c'est parce que j'utilise fishshell, mais la réponse acceptée n'a pas fonctionné pour moi. nfonctionne un régal!
clozach
2

J'utilise ZSH, j'ai donc dû modifier ~/.zshrcles lignes concernant NVM dans cet ordre:

[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
source ~/.nvm/nvm.sh
Matt Walterspieler
la source
1
$ nvm alias default {NODE_VERSION}

lorsque nous utilisons la commande ci-dessus, ne mettez à jour que la version du nœud mais npmutilise toujours l'ancienne version.

Voici une autre solution pour mettre à jour les deux nodeet npm, dans mon cas, je veux utiliser le nœud 8.9.4et j'ai utilisé la commande ci-dessous.

$ nvm use default 8.9.4

Et la commande renvoie la sortie.

Maintenant, en utilisant le nœud v8.9.4 (npm v5.6.0)

Anish Agarwal
la source
0

Si vous avez également SDKMAN ...

D'une manière ou d'une autre, SDKMAN était en conflit avec ma NVM. Si vous êtes à bout de souffle avec cela et que vous ne pouvez toujours pas le comprendre, je l'ai juste corrigé en ignorant le "CECI DOIT ÊTRE À LA FIN DU FICHIER ..." de SDKMAN et en mettant les lignes NVM après.

#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
itsDrew
la source
0

J'étais confronté au même problème lors de l'utilisation du terminal intégré dans l'éditeur VS Code. Le redémarrage de VS Code après avoir changé la version du nœud à l'aide de nvm a résolu le problème pour moi.

RS1879
la source
0

Voici une instruction simple:

1) Installez:

nvm install 8.10.0

2) Utiliser une fois par terminal

nvm use 8.10.0

3) Configurer par défaut pour tous les terminaux

nvm alias default 8.10.0

Vous devrez peut-être utiliser les autorisations root pour effectuer ces actions.

Et n'oubliez pas de consulter la documentation nvm pour plus d'informations.

Notez également que vous devrez peut-être spécifier la version du nœud pour votre IDE: entrez la description de l'image ici

Arseniy-II
la source
-2

De plus, si vous avez installé un nœud avant nvm, vérifiez dans votre ~ / .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 du nœud par défaut.

tibbus
la source
Définir une variable de chemin n'a rien à voir avec la sélection de version nvm, sûrement?
sn0r
nvm.sh devrait modifier votre CHEMIN après l'avoir défini (par exemple avec ce qui précède). Cela permet à nvm de placer son répertoire de version avant / usr / local / bin où réside la version "système" du nœud.
Denis Howe
-3

Après une longue période de conflit avec ce problème, j'ai trouvé comment le résoudre. Voici une solution étape par étape pour le problème:

  • Ouvrez le terminal et installez les outils de développement en ligne de commande:

    xcode-select --install

  • Appuyez sur Entrée

  • Installez la dernière version de NVM:

    cd ~/

  • Appuyez sur Entrée

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

  • Appuyez sur Entrée
  • Si vous avez déjà créé le dossier .nvm auparavant, vous verrez le message d'erreur suivant:

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

    Sinon, vous verrez le processus de clonage s'exécuter jusqu'à ce qu'il soit terminé.

  • Découvrez la dernière version de NVM:

    cd ~/.nvm

  • Appuyez sur Entrée

    git checkout v0.34.0

    Vous obtiendrez une réponse similaire à:

    HEAD is now at 3d9c31d v0.34.0

    La version peut être différente sur différents systèmes.

    ls

  • Appuyez sur Entrée

    . nvm.sh

  • Appuyez sur Entrée

    nvm list

  • Appuyez sur Entrée

    Vous verrez les différentes versions de nœuds installées sur votre machine, il peut y avoir des erreurs, ne leur prêtez pas attention.

    nvm ls-remote | tail -n9

  • Appuyez sur Entrée

    nvm list

  • Ouvrez bash en utilisant vim:

    vim ~/.bash_profile

  • Dans l'éditeur vim, appuyez sur: ipour entrer INSERT modeet démarrer une nouvelle ligne. Si vous avez des erreurs lors de l'édition, appuyez sur la ESCtouche puis sur :q!pour quitter sans enregistrer.

    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

  • Appuyez sur la ESCtouche lorsque vous avez terminé de modifier le fichier (vous verrez que le mode INSERT disparaît).

  • Appuyez sur :wqpour enregistrer le fichier.
  • Appuyez sur Entrée

    nvm ls-remote | tail -n9

  • Appuyez sur Entrée et installez la dernière version de NVM présentée:

    nvm install 12.6.0

  • Une fois le processus terminé, vous verrez: Now using node v12.6.0 (npm v6.9.0)

  • Vous pouvez vérifier si l'installation réussit en appuyant sur:

    node -vou npm -v, il devrait vous montrer les versions de nvm et npm installées sur votre système.

Eden Sharvit
la source