nvmでNode.js・npmをインストールして切り替える方法【Windows】
- 開発環境
- JavaScript
- Windows
すでにnvm-windowsを導入している場合、Node.jsのインストールと切り替えはPowerShellから実行できます。ここでは検証例としてNode.js 22.12.0を使用し、nvm install、nvm use、バージョン確認までを実際の出力に沿って進めます。あわせて、npm -vだけが実行できない場合の原因を切り分けます。
使用するコマンド: 管理者PowerShellで
nvm install 22.12.0、nvm use 22.12.0の順に実行します。node -vとnpm -vでバージョンが表示されれば完了です。npm -vだけが実行ポリシーエラーになる場合は、まずnpm.cmd-vで動作を確認します。
| 検証項目 | 内容 |
|---|---|
| 対象OS/シェル | Windows 10/11、Windows PowerShell |
| 使用バージョン | nvm-windows 1.2.2、Node.js 22.12.0、npm 10.9.0 |
この記事でわかること
nvmがインストール済みのWindows PCであれば、nvm install→nvm useの順に実行することで、任意バージョンのNode.js・npmを使える状態にできます。本記事ではNode.js 22.12.0・npm 10.9.0を例に、PowerShellでnpmだけが動かない場合の切り分け方法も解説します。
nvmとは何か・なぜNode.jsのバージョン管理が必要か
nvm(Node Version Manager)は、1台のPCに複数バージョンのNode.jsを共存させ、コマンド一つで切り替えられるようにするバージョン管理ツールです。
- プロジェクトごとに要求されるNode.jsのバージョンが異なる場合でも、公式サイトからインストーラーを都度入れ替える必要がなくなります。
nvm install <バージョン>でダウンロード、nvm use <バージョン>で切り替えという2コマンドだけで運用できます。- 本記事で使用しているnvmのバージョンは
1.2.2(Windows版のnvm-windows)です。
事前確認:nvmのインストール状態をチェックする
Node.jsをインストールする前に、nvm -vでnvm自体が正しく導入されているかを確認します。
1. PowerShellを開き、次のコマンドを実行します。
nvm -v2. 実行結果としてバージョン番号が表示されれば、nvmは正常にインストールされています。
PS C:\Users\ユーザー名> nvm -v
1.2.2

このように1.2.2という応答が返ってくれば、次のNode.jsインストール手順に進めます。バージョンが表示されずエラーになる場合は、nvm-windows本体が未導入か、PATHがまだ反映されていない可能性があります。先に「nvm-windowsのインストール方法|Windows 10・11対応」を確認してください。
以降のnvm installとnvm useは、シンボリックリンクの操作で権限エラーが起きるのを避けるため、Windows TerminalまたはPowerShellを「管理者として実行」して操作します。
手順1:nvmでNode.jsをインストールする
nvm install <バージョン番号>コマンド1つで、指定したバージョンのNode.jsがダウンロード・展開されます。
インストール可能なバージョンを確認する(任意)
インストールしたいバージョンが決まっていない場合は、nvm list availableコマンドで現在インストール可能なNode.jsバージョンの一覧を確認できます。
nvm list available一覧にはCurrent・LTS(長期サポート版)・Old Stable・Old LTSの各系統がバージョン番号とあわせて表示されます。長期運用では、利用するアプリが対応しているLTS系のバージョンが基本です。以降の22.12.0は画面とコマンド出力を示すための検証例であり、常に最新またはすべてのプロジェクトに適したバージョンという意味ではありません。実際にはプロジェクトの要件に合う番号へ読み替えてください。
1. PowerShellで以下のコマンドを実行し、対象バージョン(本記事の実行例ではNode.js 22.12.0)をインストールします。
nvm install 22.12.02. 次のようにダウンロードと展開が進み、「Installation complete.」と表示されればインストール完了です。
PS C:\Users\ユーザー名> nvm install 22.12.0
Downloading node.js version 22.12.0 (64-bit)...
Extracting node and npm...
Complete
Installation complete.
If you want to use this version, type:
nvm use 22.12.0

3. メッセージの案内どおり、この時点ではまだnodeコマンドは使えません。有効化する手順3に進む前に、次の手順2でインストール済みバージョンを確認します。
手順2:インストール済みバージョンを確認する(nvm ls)
nvm lsコマンドで、PCにインストール済みのNode.jsバージョン一覧を確認できます。
1. 次のコマンドを実行します。
nvm ls2. 手順1でインストールしたバージョンが一覧に表示されることを確認します。
PS C:\Users\ユーザー名> nvm ls
22.12.0

複数バージョンを導入している場合は、この一覧に並ぶすべてのバージョンからnvm useで使用中のものを切り替えられます。
なぜ「nvm install」直後は「node -v」がエラーになるのか
nvm installはNode.jsのダウンロード・展開のみを行い、実際に使うバージョンとして有効化する処理は含まれていないためです。
インストール直後にnode -vを実行すると、次のようにコマンドが見つからないエラーになります。
PS C:\Users\ユーザー名> node -v
node : 用語 'node' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください。
発生場所 行:1 文字:1
+ node -v
+ ~~~~
+ CategoryInfo : ObjectNotFound: (node:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

このエラーを解消するには、次の手順3でnvm useを実行してバージョンを有効化する必要があります。
手順3:Node.jsのバージョンを有効化する(nvm use)
nvm use <バージョン番号>を実行すると、nvm-windowsが管理するシンボリックリンクの参照先が切り替わり、選択したNode.jsが有効になります。選択状態は現在のPowerShellだけに限定されず、再起動後も維持されます。
1. 次のコマンドで、手順1でインストールしたバージョンを有効化します。
nvm use 22.12.02. 「Now using node v22.12.0 (64-bit)」と表示されれば切り替え完了です。
PS C:\Users\ユーザー名> nvm use 22.12.0
Now using node v22.12.0 (64-bit)

3. 改めてnode -vを実行し、正しくバージョンが表示されることを確認します。
PS C:\Users\ユーザー名> node -v
v22.12.0

これでNode.js本体は使用可能になりましたが、続けてnpmコマンドを実行すると別のエラーが発生する場合があります。次の手順4で対処します。
手順4:npmコマンドが実行できないエラーを解消する
Windows PowerShellの実行ポリシーによってnpm.ps1がブロックされる場合があります。まず実行ポリシーを変更しない方法で動作を確認し、必要な場合に限って現在のユーザーの設定を変更します。
1. node -v成功後にnpm -vを実行すると、以下のようなセキュリティエラーが表示されることがあります。
PS C:\Users\ユーザー名> npm -v
npm : このシステムではスクリプトの実行が無効になっているため、ファイル C:\nvm4w\nodejs\npm.ps1 を読み込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:1
+ npm -v
+ ~~~~
+ CategoryInfo : セキュリティ エラー: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess

2. Node.jsにはnpm.ps1とnpm.cmdが含まれます。PowerShellがnpm.ps1を優先して選び、その実行がブロックされている状態なので、まず次のコマンドを試します:npm.cmd -v
バージョン番号が表示されれば、Node.jsとnpm自体は正常です。実行ポリシーを変更せず、以後もnpm.cmdを使用できます。
3. npmという短いコマンドで継続的に利用したい場合は、現在の設定を確認します。
Get-ExecutionPolicy -List4. 個人所有のPCで設定内容を理解したうえで変更する場合は、現在のユーザーに限定して次を実行します。
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser5. 確認プロンプトが表示された場合は「Y」(はい)を入力します。設定変更後、再度npm -vを実行してバージョンが表示されることを確認します。
PS C:\Users\ユーザー名> Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
PS C:\Users\ユーザー名> npm -v
10.9.0

これでnode -v・npm -vの両方が正常に実行でき、Node.js/npm環境のセットアップは完了です。
会社・学校などの管理端末では、組織のグループポリシーが優先される場合があります。管理者の許可なく設定を変更せず、システム管理者へ確認してください。現在のユーザーに設定した値を解除する場合は、次を実行します。
Set-ExecutionPolicy Undefined -Scope CurrentUserなぜ実行ポリシーエラーが発生するのか
Windows PowerShellには、スクリプトの実行条件を制御する実行ポリシーがあります。npmを実行した際に選択されたnpm.ps1が現在のポリシー条件を満たさないと、PSSecurityExceptionが発生します。実行ポリシーの適用範囲と優先順位は、Microsoft Learnの公式解説で確認できます。
RemoteSignedでは、ローカルで作成されたスクリプトは署名なしで実行でき、インターネットから取得したスクリプトには原則として信頼された発行元の署名が求められます。-Scope CurrentUserを付けることで、変更対象を現在ログイン中のユーザーに限定できます。ただし、実行ポリシーはセキュリティ境界そのものではなく、組織のポリシーが優先される場合もあります。
参考資料
まとめ
| 手順 | コマンド | 実行結果 |
|---|---|---|
| nvmのバージョン確認 | nvm -v | 1.2.2 |
| Node.jsをインストール | nvm install 22.12.0 | ダウンロード・展開完了 |
| インストール済み一覧の確認 | nvm ls | 22.12.0 |
| バージョンの有効化 | nvm use 22.12.0 | Now using node v22.12.0 (64-bit) |
| Node.jsバージョン確認 | node -v | v22.12.0 |
| npmの代替コマンド確認 | npm.cmd -v | npm自体が動作するか確認 |
| 実行ポリシーの変更(必要な場合のみ) | Set-ExecutionPolicy RemoteSigned -Scope CurrentUser | 現在のユーザーに設定 |
| npmバージョン確認 | npm -v | 10.9.0 |
nvmを使ったNode.js/npmのセットアップは、nvm install→nvm useという2コマンドが基本です。npmだけが動かない場合は、すぐにセキュリティ設定を変更せず、npm.cmd -vで原因を切り分けてから必要な対応を選んでください。