Windowsにnode.jsをインストールしたのにnpmコマンドが使えない場合の対処方法

2025.10.152025.10.14

システム その他

Windowsにnode.jsをインストールすると、nodeのパッケージマネージャーであるnpmもインストールされます。ところがnpmコマンドを実行しようとすると下記エラーが出てしまうことがあります。この場合の対処方法をご紹介します。

対処方法

バージョンを確認する

おさらいです。node.jsをインストール完了し、PowerShellでnode.jsのバージョンを確認します。ターミナルはWindowsターミナルを使用しています。

PS C:\Users\user01> node -v
v22.20.0

問題なさそうです。続いてnpmのバージョンを確認します。

PS C:\Users\user01> npm -v
npm : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Program Files\nodejs\npm.ps1 を読み込むことができません。
詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:1
+ npm -v
+ ~~~
    + CategoryInfo          : セキュリティ エラー: (: ) []、PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

セキュリティエラーが発生して実行できませんでした。node.jsの格納先を確認すると npm.ps1 というファイルは確実に存在していることがわかります。

PS C:\Users\user01> ls "c:\Program Files\nodejs" -name
## フォルダ名にスペースが入る場合はダブルクォーテーションで囲います

node_modules
corepack
corepack.cmd
install_tools.bat
node.exe
nodevars.bat
npm
npm.cmd
npm.ps1
npx
npx.cmd
npx.ps1

エクスプローラーでも確認できます。

PowerShell側の実行ポリシーの設定でスクリプトを実行できないということです。ここから対処していきます。

PowerShellの実行ポリシーを確認する

PowerShellの実行ポリシーがどうなっているか確認します。実行ポリシーとはExcutionPolicyの日本語翻訳です。Get-ExcutionPolicy コマンドを使用します。

PS C:\Users\user01> Get-ExecutionPolicy
Restricted

Restricted になっています。制限がかかっており、これでは実行できません。実行ポリシーは結構複雑ですので後述します。

実行ポリシーを変更する

実行ポリシーを変更します。今後もスクリプトを使用することを考えると RemoteSigned にはしておきたいですが、範囲を広げすぎると危険性が増します。今回は現在のユーザーに限って、RemoteSigned に設定していきます。

PS C:\Users\user01> Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
# 現在のユーザーについてのみ RemoteSigned に設定します。

設定がうまくいっているかを確認します。-list を付けるとスコープごとの設定が一覧できます。スコープの概念については後述します。

PS C:\Users\user01> Get-ExecutionPolicy -list

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser    RemoteSigned
 LocalMachine       Undefined

意図したとおり CurrentUser のみRemoteSigned になっています。

npm のバージョン確認を再度行います。

PS C:\Users\user01> npm -v
10.9.3

コマンドが通りました。解決です。

ユーザーを限定しない設定

ユーザーを限定しない設定についても説明します。こちらの設定はPowerShellを管理者権限で実行する必要があります。

下記設定ではこのPCの全ユーザーが RemoteSigned の設定になります。設定が緩い分だけ危険性も増しますので、特に理由がないのであれば CurrentUser に限っておいた方がよさそうです。

PS C:\Users\user01> Set-ExecutionPolicy RemoteSigned

-list も確認してみます。

PS C:\Users\user01> Get-ExecutionPolicy -list

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser    RemoteSigned
 LocalMachine    RemoteSigned

LocalMachineもRemoteSignedになっていることが確認できます。このコンピュータの全ユーザーが RemoteSigned の権限になっているということです。試しにやっただけですので、元に戻しておきます。

PS C:\Users\user01> Set-ExecutionPolicy Undefined -Scope LocalMachine

確認します。

PS C:\Users\user01> Get-ExecutionPolicy -list

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser    RemoteSigned
 LocalMachine       Undefined

実行ポリシーとスコープについて

PowerShellの実行ポリシーの設定は、スコープと実行ポリシーの2つの概念で構成されています。

スコープの種類

特にスコープがわかりづらいため、下記コマンドを試してみてください。

PS C:\Users\user01> Get-ExecutionPolicy -List
        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine       Undefined

スコープのリストが表示されました。すべてスコープの実行ポリシーがUndefined=未設定となっていることがわかります。これがデフォルトの状態です。

スコープの内容は以下のとおりです。MachinePolicyとUserPolicyはグループポリシー自体を変更してしまうため基本的には変更しないことをおすすめします。

スコープ説明
MachinePolicyコンピュータの全ユーザーに適用。グループポリシー自体を書き換え。
UserPolicy現在のユーザーのみに適用。グループポリシー自体を書き換え。
Process現在のPowerShellのプロセスにのみ適用。PowerShellを終了すると失効。
CurrentUser現在のユーザーのみに適用。
LocalMachineコンピュータの全ユーザーに適用。

実行ポリシーの種類

実行ポリシーには下記の種類があります。下に行くほどセキュリティリスクが高くなります。

実行ポリシー説明
Restricted規定値。スクリプト実行は不可。最も安全な状態。
AllSignedすべてのスクリプトに信頼済み署名が必要。比較的安全な状態。
RemoteSignedローカル作成したものは実行可能。
Unrestricted全てのスクリプトを実行可能。未署名のスクリプトの場合は警告を表示。
Bypass全てのスクリプトを実行可能。警告もメッセージも出ない。

Undefined は例外で未定義状態を表します。

実行ポリシー説明
Undefined未定義状態。                         

about_Execution_Policies(公式)
https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-7.5

まとめ

npm -v がエラーになる原因は実行ポリシーによるものでした。このコマンドで呼び出されるファイルはエラーメッセージにもあるとおり npm.ps1 ファイルで、ps1ファイルはスクリプトのため実行ができなかったというわけです。スクリプトを簡単に実行できてしまうことは非常に危険ですのでデフォルトではできないようになっています。

それではなぜ node -v は問題ないかといいますと、こちらはスクリプトではなく node.exe を実行しているからです。exeファイルもWindowsでは危険なファイルと見なされますが、PowerShellの実行ポリシーでは保護されておらず、普通に実行できるというわけです。

お問い合わせCONTACT

株式会社エー・エム・ティーは
印刷物からホームページ制作・更新運用管理までトータルサポート。
企業様の課題解決や企業価値向上のお手伝いをいたします。

受付9:00~18:00 ※土日祝除く