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?

3voto

Ich hatte dasselbe Problem, während ich das integrierte Terminal im VS Code Editor benutzte. Das Neustarten von VS Code nach dem Wechsel der Node-Version mit nvm hat das Problem für mich behoben.

3voto

Kiry Meas Punkte 938
  • Ich verwende NVM mit zsh bash
  • folge diesem Link, um nvm zu entfernen
  • $ brew install nvm
  • Ich habe diese Zeile ausgeführt $ source $(brew --prefix nvm)/nvm.sh nach der Installation und dem Neustart des Terminals
  • Platzieren Sie die folgende Zeile in der Datei ~/.zshrc, wie auch von der nvm offiziellen GitHub-Seite empfohlen

    export NVM_DIR="$HOME/.nvm" [ -s "/usr/local/opt/nvm/nvm.sh" ] && . "/usr/local/opt/nvm/nvm.sh" # Dies lädt nvm [ -s "/usr/local/opt/nvm/etc/bash_completion.d/nvm" ] && . "/usr/local/opt/nvm/etc/bash_completion.d/nvm" # Dies lädt nvm bash_completion

    Platzieren Sie dies nach der nvm-Initialisierung!

    autoload -U add-zsh-hook

    load-nvmrc() { local node_version="$(nvm version)" local nvmrc_path="$(nvm_find_nvmrc)"

    if [ -n "$nvmrc_path" ]; then local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")

    if [ "$nvmrc_node_version" = "N/A" ]; then
      nvm install
    elif [ "$nvmrc_node_version" != "$node_version" ]; then
      nvm use
    fi

    elif [ "$node_version" != "$(nvm version default)" ]; then echo "Zurückkehren zur nvm Standardversion" nvm use default fi } add-zsh-hook chpwd load-nvmrc load-nvmrc

2voto

Mouafa Punkte 29

Führen Sie dies aus, nachdem Sie irgendeine Version installiert haben,

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

Dieser Befehl kopiert die aktive Version von Node über nvm in das Verzeichnis /usr/local/ und setzt die Berechtigungen so, dass alle Benutzer darauf zugreifen können.

2voto

itsDrew Punkte 141

Wenn Sie auch SDKMAN haben...

Irgendwie hat sich SDKMAN mit meinem NVM überschnitten. Wenn Sie mit diesem Problem am Ende Ihrer Weisheit sind und immer noch nicht herausfinden können, habe ich es einfach gelöst, indem ich das "DIESES MUSS AM ENDE DER DATEI STEHEN..." von SDKMAN ignoriert habe und die NVM-Zeilen danach platziert habe.

#DIES MUSS AM ENDE DER DATEI SEIN, DAMIT SDKMAN FUNKTIONIERT!!!
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"  # Dies lädt nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # Dies lädt nvm bash_completion

2voto

Harshit Garg Punkte 1899

Ich habe hier einen neuen Weg gefunden. Die Verwendung von n Interactively Manage Your Node.js hilft.

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