web-dev-qa-db-ja.com

nvmは新しいターミナルセッションでノードを「忘却」し続けます

OS Xで新しいターミナルセッションを使用すると、nvmはノードのバージョンを忘れ、デフォルトでは何もしません。

$ nvm ls

         .nvm
     v0.11.12
     v0.11.13

すべてのセッションでnvm use v.0.11.13を押し続ける必要があります。

         .nvm
     v0.11.12
->   v0.11.13

私はbrewインストールと公式のインストールスクリプトの両方を試しました。

私の.profileブリューバージョン用:

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

そして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

何がおかしいのですか?

468
frhd

nvm alias defaultを試してください。例えば:

$ nvm alias default 0.12.7

これにより、シェルのデフォルトのノードバージョンが設定されます。次に、Shellウィンドウを閉じて新しいウィンドウを開いて、変更が持続することを確認します。それから、node --version

1033
dylants

後でノードバージョンが更新されるとともにデフォルトのエイリアスが更新されないようにするため、node自体にエイリアスを設定します。

nvm alias default node
73
Tarun

最新の安定版をインストールするには:

nvm install stable

デフォルトを(特定のバージョンではなく)安定バージョンに設定するには、次の手順を実行します。

nvm alias default stable

インストールされているバージョンを一覧表示するには

nvm list

v6.2.0の時点では、次のようになります。

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

nvmはPATH変数を変更することによってその仕事をするので、あなたはあなたがnvm.shスクリプトを供給した後にあなたがどうにかあなたのPATHを他の何かに変更していないことを確かめる必要があります。

私の場合は、nvm.shが.bashrcで呼び出されていましたが、その後PATH変数が.bash_profileで更新されていたため、セッションはnvmノードより前にシステムノードを見つけることができました。

22
Jeff Mikels

私の場合、別のプログラムがPATHの変更を.bashrcに追加しました

他のプログラムがPATHafter nvmの初期化を変更した場合、nvmのPATHの変更は忘れられ、システムノードはPATH上になります(またはノードなし)。

解決策は、nvmの設定を.bashrcbottomに移動することでした

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

溶液:

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

(これはCentOS上のbash 4.2.46のものでした。bashのバグのように思えますが、私は間違っているかもしれません。)

18
joeytwiddle

最高と評価された解決策は私にとってうまくいかないようでした。私の解決策は以下の通りです。

  1. Homebrewを使用してnvmを完全にアンインストールします。brew uninstall nvm
  2. brew install nvmを再インストールします
  3. ターミナルで、以下の手順に従います(これらは、homebrew経由でnvmをインストールするときにも表示されます)。

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

上記の手順は、NVMの作業ディレクトリを$ HOMEパスに追加し、nvm-execをNVMの作業ディレクトリにコピーして、$ HOME/.bashrc、$ HOME/.zshrc、またはシェルの同等の設定ファイルに追加します。 homebrewを使用してNVMインストールにリストされている)

8
Joe

あなたはまだすべての運を試してみたなら、あなたはこれを試すことができます:_

1 - > NVMのアンインストール

rm -rf ~/.nvm

2 - >次のようにしてnpm依存関係を削除する this

3 - > NVMのインストール

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

4 - > ~/.bash_profile設定を設定する

Sudo nano ~/.bash_profileを実行する

これに続いてコピー&ペースト

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 + X変更を保存する

6 - > . ~/.bash_profileを実行する

7 - >これであなたのマシンにはnvmがインストールされているはずです。node run nvm install v7.8.0をインストールするにはこれがデフォルトのノードバージョンになるでしょう。

5
Gabbar

この質問はOSXについて言及しましたが、それは私のLinux OSで私に起こりました。私はnvm alias default <version>を使用しようとしました、しかし、それぞれの新しいターミナルセッションのために使われたノードバージョンは忘れられていました。だから、ここで私が考え出した解決策です。

ノードバージョン にデフォルトのエイリアスを必ず設定し、次のコードを.bashrcに入れて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

記述的ソリューションリンク

3

任意のバージョンをインストールした後にこれを実行してください。

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

このコマンドは、nvmを介してアクティブにしたノードのバージョンを/ usr/local /ディレクトリにコピーし、すべてのユーザーがそれらにアクセスできるように権限を設定します。

2
Mouafa Ahmed

私はここで新しい方法を見つけました。 n対話的にあなたのNode.jsを管理する を使用してください。

2
Harshit Garg

たとえば、nvm install 10.14を実行すると、現在のシェルセッションのそのバージョンがnvm useになりますが、notは常に、将来のセッションのデフォルトとして設定されます。新しいシェルセッションで取得するノードのバージョンは、nvm alias defaultによって決定されます。紛らわしいことに、nvm installは、デフォルトのエイリアスがまだ設定されていない場合にのみ設定します。期待される動作を得るには、次を実行します。

nvm alias default ''; nvm install 10.14

これにより、そのバージョンがダウンロードされ、現在のセッションで使用されますおよび将来のセッションのデフォルトとして設定します。

2
Denis Howe

この問題と長い間対立した後、私はそれを修正する方法を見つけました。問題の段階的な解決策は次のとおりです。

  • ターミナルを開き、コマンドライン開発者ツールをインストールします。

    xcode-select --install

  • Enterを押す

  • NVMの最新バージョンをインストールします。

    cd ~/

  • Enterを押す

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

  • Enterを押す
  • 以前に.nvmフォルダーを既に作成した場合、次のエラーメッセージが表示されます。

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

    それ以外の場合は、クローン作成プロセスが完了するまで実行されます。

  • 最新のNVMバージョンを確認してください。

    cd ~/.nvm

  • Enterを押す

    git checkout v0.34.0

    次のような応答が返されます。

    HEAD is now at 3d9c31d v0.34.0

    バージョンはシステムによって異なる場合があります。

    ls

  • Enterを押す

    . nvm.sh

  • Enterを押す

    nvm list

  • Enterを押す

    マシンにインストールされているさまざまなノードバージョンが表示されます。エラーが発生している可能性がありますが、注意を払ってはいけません。

    nvm ls-remote | tail -n9

  • Enterを押す

    nvm list

  • Vimを使用してbashを開きます。

    vim ~/.bash_profile

  • Vimエディター内でiを押してINSERT modeを入力し、新しい行を開始します。編集時に間違いがある場合は、ESCキーを押してから:q!を押して保存せずに終了します。

    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

  • ファイルの編集が終了したらESCキーを押します(INSERTモードが消えます)。

  • :wqを押してファイルを保存します。
  • Enterを押す

    nvm ls-remote | tail -n9

  • Enterキーを押して、提示された最新のnvmバージョンをインストールします。

    nvm install 12.6.0

  • プロセスが終了すると、次のように表示されます:Now using node v12.6.0 (npm v6.9.0)

  • 次を押して、インストールが成功したかどうかを確認できます。

    node -vまたはnpm -v、システムにインストールされているnvmとnpmの両方のバージョンが表示されます。

ベース:最新のNodeバージョンマネージャーNVMをインストールし、macOS Mac OS XにNodeとNPMをインストールする方法 =

0
Eden Sharvit

SDKMANもお持ちの場合...

どういうわけか、SDKMANはNVMと競合していました。あなたがこれであなたの賢明な終わりにいて、まだそれを理解できない場合、私はSDKMANから「これはATファイルの終わりでなければなりません...」を無視することによってそれを修正しましたその後のNVM行。

#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
0
itsDrew
$ nvm alias default {NODE_VERSION}

上記のコマンドを使用する場合、ノードバージョンのみを更新しますが、npmは引き続き古いバージョンを使用します。

nodenpmの両方を更新するための別のソリューションがあります。私の場合、ノード8.9.4を使用し、以下のコマンドを使用しました。

$ nvm use default 8.9.4

そして、コマンドは出力を返します。

現在、ノードv8.9.4(npm v5.6.0)を使用しています

0
Anish Agarwal