skip to content
barorin&

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をインストールします。

Terminal window
winget install Schniz.fnm

2. 環境変数の設定

PowerShellプロファイルにfnmを追加します。

Terminal window
notepad $PROFILE

プロファイルに以下を追加します。

Terminal window
fnm env --use-on-cd --shell powershell | Out-String | Invoke-Expression

$PROFILEのパスはWindows PowerShell 5.1とPowerShell 7系で別々です。意図しないほうを編集していると設定が効かないので、バージョンを揃えておくと混乱しません。更新手順はPowerShellのアップデート方法にまとめています。

3. PowerShellの再起動

新しいPowerShellセッションを開くか、以下を実行し、プロファイルを再読み込みします。

Terminal window
. $PROFILE

4. Node.jsのインストール

fnmを使用してNode.jsのバージョンをインストールします。

Terminal window
# 最新LTS版をインストール
fnm install --lts
# 特定のバージョンをインストール
fnm install 22.14.0
# インストール可能なバージョンを確認
fnm list-remote

5. Node.jsバージョンの使用

Terminal window
# 特定のバージョンを使用
fnm use 22.14.0
# デフォルトバージョンを設定
fnm default 22.14.0
# 現在のバージョンを確認
fnm current
# インストール済みバージョンを一覧表示
fnm list

プロジェクト固有の設定

プロジェクトディレクトリに.node-versionファイルを作成すると、自動的にそのバージョンが適用されます。

22.14.0

便利なコマンド

Terminal window
# Node.jsとnpmのバージョン確認
node --version
npm --version
# 古いバージョンを削除
fnm uninstall 16.20.0
# fnmのヘルプを表示
fnm --help
# fnmをアップデート
winget upgrade Schniz.fnm
# インストール済みバージョンを確認
fnm --version

npmそのものの使い方は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なので管理者権限は不要です)。

Terminal window
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

パスが通らない場合

環境変数PATHにfnmのパスが含まれているか確認する。

Terminal window
# 環境変数を確認
$env:PATH -split ';' | Where-Object { $_ -like '*fnm*' }

PowerShellプロファイルが存在しない場合

Terminal window
# プロファイルディレクトリを作成
New-Item -ItemType Directory -Path (Split-Path $PROFILE) -Force
# プロファイルファイルを作成
New-Item -ItemType File -Path $PROFILE -Force

fnm uninstallできないとき

タスクマネージャーでnode.exeのプロセスを全て終了させてから再度アンインストールを試みると成功することがあります。

アンインストール

fnmとNode.jsを完全に削除する場合

Terminal window
# fnmをアンインストール
winget uninstall Schniz.fnm
# fnmディレクトリを削除
Remove-Item -Recurse -Force $env:LOCALAPPDATA\fnm

winget uninstallしたあとも「インストールされているアプリ」の一覧にfnmが残ってしまうことがあります。その場合はWindowsのインストール済みアプリ一覧からレジストリ経由で削除する方法で消せます。

参考リンク

この記事を書いた人

barorinのプロフィール画像

barorinCPA & Engineer

会計とITの二足のわらじで働く公認会計士です。Pythonを中心に、会計・監査の実務で使えるコードや、Ubuntu・Docker等の設定メモなどを書いています。