844 Stimmen

Nvm vergisst "vergessen" Knoten in neuer Terminal-Sitzung

Bei Verwendung einer neuen Terminalsession in OS X vergisst nvm die Knotenversion und setzt standardmäßig auf nichts zurück:

$ nvm ls:

         .nvm
     v0.11.12
     v0.11.13

Ich muss in jeder Sitzung weiterhin nvm use v.0.11.13 eingeben:

         .nvm
     v0.11.12
->   v0.11.13

Ich habe sowohl die brew-Installation als auch das offizielle Installationsskript ausprobiert.

Mein .profile für die brew-Version:

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

Und für das install.sh-Skript:

$ 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"  # Dieses lädt nvm

Irgendwelche Hinweise, was ich falsch mache?

1616voto

dylants Punkte 22782

Versuchen Sie nvm alias default. Zum Beispiel:

$ nvm alias default 0.12.7

Damit wird die Standard-Node-Version in Ihrer Shell festgelegt. Überprüfen Sie dann, ob die Änderung bestehen bleibt, indem Sie das Shell-Fenster schließen, ein neues öffnen und dann: node --version

184voto

Tarun Punkte 1611

Alias zum Knoten selbst, um die Standardalias-Aktualisierung zusammen mit späteren Knotenversionen zu vermeiden.

nvm alias default node

104voto

joeytwiddle Punkte 26603

In meinem Fall hatte ein anderes Programm PATH-Änderungen zur .bashrc hinzugefügt

Wenn das andere Programm den PATH nach der Initialisierung von nvm geändert hat, würden die PATH-Änderungen von nvm vergessen und wir hätten das Systemnode auf unserem PATH (oder kein Node).

Die Lösung bestand darin, das nvm-Setup nach unten in die .bashrc zu verschieben

### SCHLECHTE .bashrc ###

# NVM-Initialisierung
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # Dies lädt nvm

# Ein anderes Programm fügt zum PATH hinzu:
export PATH="$ANT_ROOT:$PATH"

Lösung:

### GUTE .bashrc ###

# Ein anderes Programm fügt zum PATH hinzu:
export PATH="$ANT_ROOT:$PATH"

# NVM-Initialisierung
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # Dies lädt nvm

(Dies wurde mit bash 4.2.46 auf CentOS durchgeführt. Mir scheint es wie ein Fehler in bash, aber ich könnte mich irren.)

55voto

ohho Punkte 49013

Um die neueste stabile Version zu installieren:

nvm install stable

Um die Standardeinstellung auf die stabile Version zu setzen (anstelle einer bestimmten Version):

nvm alias default stable

Um installierte Versionen aufzulisten:

nvm list

Ab v6.2.0 wird es ungefähr so aussehen:

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

33voto

protango Punkte 914

Keine dieser Lösungen hat in meiner Umgebung funktioniert, nvm scheint immer die zuerst installierte Version von Node zu laden, egal was passiert (es sei denn, Sie ändern es vorübergehend über nvm use).

Der einzige Weg, um die Standardversion zu ändern, die ich gefunden habe, ist:

  • nvm-Cache löschen: nvm cache clear
  • Standard auf gewünschte Version setzen: nvm alias default 12 (oder eine andere Version)
  • Zur gewünschten Version wechseln: nvm use 12
  • Alle anderen Versionen deinstallieren:
    • nvm ls (um Installationen aufzulisten)
    • nvm uninstall x (für jede Installation ausführen, die nicht die Standardversion ist)
  • Andere Versionen erneut installieren: nvm install x

Sie können dieses Skript verwenden, um diesen Prozess zu automatisieren (ändern Sie einfach die erste Variable auf Ihre gewünschte Version) - es wird alle Versionen, die Sie zuvor hatten, automatisch neu installieren.

DEFAULT_NVM_VERSION=16
nvm cache clear
nvm install $DEFAULT_NVM_VERSION
nvm alias default $DEFAULT_NVM_VERSION
NVERS=$(nvm ls --no-alias | grep -v -- "->" | grep -o "v[0-9.]*")
while read ver; do nvm uninstall $ver; done <<< $NVERS
while read ver; do nvm install $ver; done <<< $NVERS
nvm use $DEFAULT_NVM_VERSION

Oder als ein Einzeiler:

DEFAULT_NVM_VERSION=16 && nvm cache clear && nvm install $DEFAULT_NVM_VERSION && nvm alias default $DEFAULT_NVM_VERSION && NVERS=$(nvm ls --no-alias | grep -v -- "->" | grep -o "v[0-9.]*") && while read ver; do nvm uninstall $ver; done <<< $NVERS && while read ver; do nvm install $ver; done <<< $NVERS && nvm use $DEFAULT_NVM_VERSION

Neue Terminals sollten jetzt die Standardversion respektieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X