nvmが新しいターミナルセッションで「忘却」ノードを保持する


546

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

私が間違っていることの手がかりはありますか?


1
これをここに追加したいだけです-エクスポートし.bash_profileないでください.bashrc
James111

回答:


1181

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

$ nvm alias default 0.12.7

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


11
これはすでにnvmを使用する仕事ではありませんか?あと$ nvm alias default 0.11.13$ nvm use 0.11.12なるnode --version = 0.11.12。それでも、新しいセッションでは、ノードは再びなくなります。debianでは、この問題はまったくありません。
14

4
さて、アイブにはタイプミスがありましたnvm alias defaul X。適切な使用法で実際に動作します。だから、ワークフローは次のようになりnvm install X、その後nvm alias default X、私は推測します。助けてくれてありがとう!
14

21
私は同じ問題を抱えていました、それは私がNVM_DIR後を輸出していたからnvm.shでした。必ずNVM_DIR前にエクスポートしてください。
maxwell2022 2014年

11
nvm alias defaultは、現在の環境のノードバージョンを設定するのではなく、すべての新しい環境に設定することに注意してください。
ericsoco

28
.bash_profile.bashrcPATHsource xx/nvm.sh
それでも問題が解決

85

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

nvm alias default node

2
!警告:バージョン「node」は存在しません。デフォルト->ノード(-> N / A)?
House3272 2015年

6
どうnode alias default stableですか?
Pierre Henry

1
stableもう使いたくないと思います。nvm docsから:「安定:このエイリアスは非推奨であり、本当にノードv0.12以前にのみ適用されます。現在、これはノードのエイリアスです。」
フェリス2016

1
nodeこのデフォルトはどちらですか?現在のシェルでNVMによってインストールおよび使用されているノード、またはノードのインストールパッケージまたはHomebrewなどによってシステムにインストールされている可能性のあるノード?
2540625

7
(ここではnvmのメンテナ)node(そしてstable、しかし、semverでリリースされたものはすべて安定しているので、今では役に立たない言葉です)は、利用可能な最新バージョンを使用しています。ローカルコマンドの場合、最新のものがインストールされています。リモートコマンドの場合、最新版を利用できます。
LJHarb 2017

40

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

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)

これはうまく機能し、使用の提案はnvm list、ユーザーがバージョン管理で何が起こっているかを視覚化するのに役立ちます。ありがとう!
Solvitieg

30

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

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

溶液を、NVMのセットアップを移動することでした.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"

解決:

### 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のバグのように思えますが、私は間違っているかもしれません。)


1
これは私を助けました!デフォルトはスタックしました。
Redsandro

1
この男にメダルをあげろ!NVM_DIRエクスポートが狂ってしまった後、zshrcに他の* rcファイルを追加でロードしました。ありがとうございました!
bobbytables 2018

ありがとうございました!これは私をあざけりました。

27

nvmはPATH変数を変更することでその役割を果たします。そのため、nvm.shスクリプトを取得した後で、PATHを何らかの方法で他の何かに変更していないことを確認する必要があります。

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


1
どうすればこれを検査できますか?これは事実だと思います。
軽度のファズ2015

これは私のケースのおかげでした!私は自分の.zshrcファイルの上部にエクスポートを設定し、それを下部に移動するだけで問題が解決しました
Alejandro Silva

それは私の場合でした。ソリューションは、ファイル+セットの最後にNVM〜/ .bash_profileのエントリに移動したnvm alias defaultnvm use、私は必要なバージョンにします。
ユージーンタルタコフスキー2017年

これが私の解決策でした。以下をの一番下に移動しました.bashrcexport NVM_DIR="$HOME/.nvm"その後. "/usr/local/opt/nvm/nvm.sh"
asmiller

10

最高評価のソリューションがうまく機能していないようです。私の解決策は以下の通りです:

  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、またはシェルの同等の構成ファイルに追加します(もう一度、whatsから取得homebrewを使用してNVMインストールにリストされています)


7

すべてを試してもまだ運がない場合は、これを試すことができます:_

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

rm -rf ~/.nvm

2-> これに従ってnpm依存関係を削除します

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マシンにインストールされているはずnvm install v7.8.0です。ノードをインストールするには、これがデフォルトのノードバージョンになるか、任意のバージョンのノードをインストールできます。


1
どうもありがとう!これはbashでノードパスを設定する唯一のソリューションであり、私のために機能しました。私はむしろ、「v7.8.0をインストールNVM」使用するよりも、最新のノードのバージョンをインストールするには、「ノードのインストールNVM」使用
user3492435

5

この質問は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

説明的なソリューションのリンク


1
ただ注意してください、これはvリモートを設定するときにバージョンにを含めることに依存しています。例えばのv4.2.4代わりに4.2.4
ヴォーン

4

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

nvm alias default ''; nvm install 10.14

これは、そのバージョンがダウンロードされていることを確認し、現在のセッションのためにそれを使用する、将来のセッションのデフォルトとして設定します。


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 /ディレクトリにコピーし、すべてのユーザーがアクセスできるように権限を設定します。


そのコマンドでは、&&sではなく;s を使用することをお勧めします。場合はwhichノードを見つけることができない、私たちは、chmodコマンドに進みたくありません/bin/*
joeytwiddle 2018


2

私はZSHを使用しているので~/.zshrc、NVMに関する行をこの順序で変更する必要がありました。

[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
source ~/.nvm/nvm.sh

1
$ nvm alias default {NODE_VERSION}

上記のコマンドを使用すると、ノードのバージョンのみが更新されますが、npmまだ古いバージョンが使用されています。

ここでは、更新のための別の解決策でもあるnodenpm、私の場合は、ノードを使用したい8.9.4と私は、コマンドの下に使用しているが。

$ nvm use default 8.9.4

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

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


0

SDKMANもある場合...

どういうわけかSDKMANは私のNVMと競合していました。これで問題が解決しない場合でも、SDKMANからの「これはファイルの終わりにある必要があります...」を無視して、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

VSコードエディターで統合ターミナルを使用しているときに、同じ問題に直面していました。nvmを使用してノードバージョンを変更した後にVSコードを再起動すると、問題が解決しました。


0

ここに簡単な指示があります:

1)インストール:

nvm install 8.10.0

2)端末ごとに1回使用

nvm use 8.10.0

3)すべての端末のデフォルトとして設定

nvm alias default 8.10.0

これらのアクションを実行するには、ルート権限を使用する必要がある場合があります。

詳細についてはnvmのドキュメントを確認することを忘れないでください。

IDEのノードバージョンを指定する必要があることにも注意してください。 ここに画像の説明を入力してください


-2

また、nvmの前にノードがインストールされている場合は、〜/ .bash_profileをチェックして、次のようなものがないことを確認してください。

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

持っている場合は、コメント/削除すると、nvmがデフォルトのノードバージョンの処理を開始します。


パス変数の設定は、nvmバージョンの選択とは関係ありません。
sn0r 2017

nvm.shは、(たとえば上記で)設定した後で PATHを変更する必要があります。これにより、nvmはバージョンディレクトリ / usr / local / binの前に置き、ノードの「システム」バージョンが存在します。
Denis Howe

-3

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

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

    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の両方のバージョンが表示されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.