fnmでnodeが認識されない時の設定|Windowsでの導入と実行ポリシーエラー
/ 6 min read
Updated:Table of Contents
はじめに
fnm(Fast Node Manager)は、Node.jsのバージョン管理を簡単に行うためのツールです。 このガイドでは、Windows環境でのfnmのインストール方法と基本的な使い方を説明します。
WSL2のUbuntu側にもNode.jsが必要な場合は、nパッケージを使うUbuntuに最新のNode.jsをインストールするを参照してください。
インストール手順
1. fnmのインストール
PowerShellからwingetを管理者として実行し、fnmをインストールします。
winget install Schniz.fnm2. 環境変数の設定
PowerShellプロファイルにfnmを追加します。
notepad $PROFILEプロファイルに以下を追加します。
fnm env --use-on-cd --shell powershell | Out-String | Invoke-Expression$PROFILEのパスはWindows PowerShell 5.1とPowerShell 7系で別々です。意図しないほうを編集していると設定が効かないので、バージョンを揃えておくと混乱しません。更新手順はPowerShellのアップデート方法にまとめています。
3. PowerShellの再起動
新しいPowerShellセッションを開くか、以下を実行し、プロファイルを再読み込みします。
. $PROFILE4. Node.jsのインストール
fnmを使用してNode.jsのバージョンをインストールします。
# 最新LTS版をインストールfnm install --lts
# 特定のバージョンをインストールfnm install 22.14.0
# インストール可能なバージョンを確認fnm list-remote5. Node.jsバージョンの使用
# 特定のバージョンを使用fnm use 22.14.0
# デフォルトバージョンを設定fnm default 22.14.0
# 現在のバージョンを確認fnm current
# インストール済みバージョンを一覧表示fnm listプロジェクト固有の設定
プロジェクトディレクトリに.node-versionファイルを作成すると、自動的にそのバージョンが適用されます。
22.14.0便利なコマンド
# Node.jsとnpmのバージョン確認node --versionnpm --version
# 古いバージョンを削除fnm uninstall 16.20.0
# fnmのヘルプを表示fnm --help
# fnmをアップデートwinget upgrade Schniz.fnm
# インストール済みバージョンを確認fnm --versionnpmそのものの使い方はnpmとpnpmの基本に、インストール済みパッケージの確認と一括アップデートはnpmパッケージの確認とアップデート方法まとめにまとめています。
トラブルシューティング
「用語 ‘node’ は…認識されません」と出る場合
fnmでNode.jsを入れたのに、新しいPowerShellでnodeを実行すると次のエラーになることがあります。
node : 用語 'node' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。fnmはNode.jsをPATHに常駐させず、fnm envを実行したシェルにだけパスを通します。そのため、2. 環境変数の設定の1行がプロファイルに入っていないと、PowerShellを開き直すたびにnodeが見つからなくなります。プロファイルに追記したうえで、fnm defaultで既定のバージョンも決めておいてください。
「スクリプトの実行が無効になっている」と出る場合
プロファイルを読み込むときに、次のエラーが出ることがあります。
このシステムではスクリプトの実行が無効になっているため、ファイル C:\Users\<ユーザー名>\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 を読み込むことができません。Windowsの既定の実行ポリシーではプロファイル(.ps1)が実行されず、fnm envの行も動きません。現在のユーザーだけ実行ポリシーを変更します(-Scope CurrentUserなので管理者権限は不要です)。
Set-ExecutionPolicy RemoteSigned -Scope CurrentUserパスが通らない場合
環境変数PATHにfnmのパスが含まれているか確認する。
# 環境変数を確認$env:PATH -split ';' | Where-Object { $_ -like '*fnm*' }PowerShellプロファイルが存在しない場合
# プロファイルディレクトリを作成New-Item -ItemType Directory -Path (Split-Path $PROFILE) -Force
# プロファイルファイルを作成New-Item -ItemType File -Path $PROFILE -Forcefnm uninstallできないとき
タスクマネージャーでnode.exeのプロセスを全て終了させてから再度アンインストールを試みると成功することがあります。
アンインストール
fnmとNode.jsを完全に削除する場合
# fnmをアンインストールwinget uninstall Schniz.fnm
# fnmディレクトリを削除Remove-Item -Recurse -Force $env:LOCALAPPDATA\fnmwinget uninstallしたあとも「インストールされているアプリ」の一覧にfnmが残ってしまうことがあります。その場合はWindowsのインストール済みアプリ一覧からレジストリ経由で削除する方法で消せます。
