NVMが新しいターミナルセッションでNode.jsを認識しない問題とその解決策
NVMが新しいターミナルセッションでNode.jsを認識しない問題
NVMを使ってNode.jsのバージョンを切り替えた後、新しいターミナルセッションを開くと、設定したバージョンが適用されず、デフォルトのバージョンに戻ってしまうことがあります。
原因:
NVMは、nvm use
コマンドで指定されたバージョンを、現在のシェルセッションでのみ使用します。新しいターミナルセッションを開くと、新しいシェルが起動するため、設定が引き継がれません。
解決策:
以下の方法で、新しいターミナルセッションでも設定したNode.jsバージョンを適用することができます。
nvm alias
コマンドを使って、デフォルトのNode.jsバージョンを設定することができます。
nvm alias default <version>
例:
nvm alias default 16.14.2
このコマンドを実行すると、新しいターミナルセッションを開いても、Node.jsバージョンは16.14.2
になります。
.zshrc
ファイルにNVMの設定を記述することで、新しいターミナルセッションでも設定が引き継がれます。
# .zshrcファイル
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
nvm alias default <version>
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
nvm alias default 16.14.2
fish
シェルは、NVMの設定を自動的に引き継ぐことができるため、上記のような設定は必要ありません。
NVM for VS Codeを使う
Visual Studio CodeでNVMを使う場合は、NVM for VS Code
拡張機能を使うと便利です。この拡張機能は、VS Code内でNVMを管理することができ、新しいターミナルセッションでも設定したNode.jsバージョンが適用されます。
補足:
- 上記の解決策は、Mac OSだけでなく、他のOSでも同様です。
nvm use
コマンドで指定したバージョンは、現在のシェルセッションでのみ使用されます。新しいターミナルセッションでそのバージョンを使用するには、上記のような設定が必要です。
- NVMに関する情報は、NVMの公式ドキュメントを参照してください。
- VS CodeでNVMを使う場合は、
NVM for VS Code
拡張機能のドキュメントを参照してください。
nvm alias default 16.14.2
.zshrcファイルに設定を記述する
# .zshrcファイル
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
nvm alias default 16.14.2
fishシェルを使う
# fish config
set -g nvm_default_node "16.14.2"
VS CodeでNVM for VS Code
拡張機能をインストールして、設定画面でデフォルトのNode.jsバージョンを16.14.2
に設定します。
上記はあくまでサンプルコードであり、環境に合わせて変更する必要があります。
NVMで新しいターミナルセッションでNode.jsバージョンを設定する他の方法
# .bashrcファイル
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
nvm alias default <version>
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
nvm alias default 16.14.2
nvm init
コマンドを実行すると、.bashrc
ファイルにNVMの設定が自動的に記述されます。
nvm init
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
nvm_exec
コマンドを使って、特定のバージョンのNode.jsでコマンドを実行することができます。
nvm_exec <version> <command>
nvm_exec 16.14.2 node index.js
このコマンドを実行すると、index.js
ファイルはNode.jsの16.14.2
バージョンで実行されます。
環境変数を使う
NVM_NODE_VERSION
環境変数を設定することで、新しいターミナルセッションで使用するNode.jsバージョンを指定することができます。
export NVM_NODE_VERSION=<version>
export NVM_NODE_VERSION=16.14.2
NVM for VS Codeを使う
NVMで新しいターミナルセッションでNode.jsバージョンを設定するには、いくつかの方法があります。上記の方法の中から、自分に合った方法を選択してください。
node.js macos npm