1.

Windows で「npx は内部コマンドまたは外部コマンドとして認識されていません」の原因と対処

編集
この記事の要点
  • 原因の 9 割は Node.js が未インストール または インストール後にターミナル未再起動
  • npx は Node.js 5.2+ に同梱される。node -v / npm -v が通れば npx も入っているはず
  • PATH 確認: %APPDATA%\npm (ユーザー)と %ProgramFiles%\nodejs (全ユーザー)
  • PowerShell では 実行ポリシーnpx.ps1 がブロックされる → Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
  • 別解: nvm-windows / Volta / Scoop / winget 経由なら PATH 自動管理
  • インストール後は新しいターミナルを開く(既存セッションは PATH を再読み込みしない)

このエラーは何か

C:\Users\foo>npx create-react-app my-app
'npx' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

C:\Users\foo>npx --version
'npx' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

Windows コマンドプロンプト / PowerShell が npx という実行ファイルを PATH 環境変数から見つけられないときに出ます。Node.js が未インストールPATH が通っていないのどちらかです。

原因の切り分け

確認コマンド該当する場合の対処
Node.js が入っているかnode -v未インストール → 公式インストーラー(対処1)
npm が動くかnpm -vnpm だけ動く・npx だけ NG → PATH or 古い Node(対処2)
npx の実体パスwhere npx「見つかりません」→ PATH 未通し(対処3)
PowerShell 固有Get-ExecutionPolicyRestricted → ポリシー変更(対処4)
ターミナル再起動インストール直後はターミナル再起動必須(対処5)

対処1: Node.js を公式から入れる

最も確実。https://nodejs.org/ から LTS 版(推奨)をダウンロードしてインストール。インストーラーは PATH を自動設定するので、インストール後にターミナルを開き直すだけで通ります。

# インストール後、新しい PowerShell を開いて確認
node -v          # v20.11.1 等
npm -v           # 10.2.4 等
npx -v           # 10.2.4 等  ← npm に同梱

# winget で入れることも可能(Windows 10/11)
winget install OpenJS.NodeJS.LTS

# Chocolatey 派
choco install nodejs-lts

# Scoop 派
scoop install nodejs-lts

対処2: PATH の確認と修正

# PATH に Node.js が含まれているか
$env:PATH -split ';' | Select-String node

# 期待される出力:
# C:\Program Files\nodejs\
# C:\Users\\AppData\Roaming\npm

# npx の場所を探す
where.exe npx
where.exe node
where.exe npm

# 期待される出力:
# C:\Program Files\nodejs\npx.cmd
# C:\Program Files\nodejs\npx.ps1
# C:\Program Files\nodejs\npx       (シェルスクリプト)

対処3: PATH を手動で追加

  1. スタートメニューで「環境変数」を検索 → 「システム環境変数の編集」
  2. 「環境変数」ボタン → ユーザー環境変数の Path を編集
  3. 以下を追加:
    • C:\Program Files\nodejs\
    • %APPDATA%\npm
  4. OK → 新しい PowerShell を開いて確認

コマンドで一時的に通すこともできます:

# 一時的に PATH 追加(このセッションのみ)
$env:PATH += ';C:\Program Files\nodejs;' + $env:APPDATA + '\npm'
npx -v

# 永続的に追加(ユーザー環境変数に書き込み)
[Environment]::SetEnvironmentVariable(
    'Path',
    [Environment]::GetEnvironmentVariable('Path', 'User') + ';C:\Program Files\nodejs;%APPDATA%\npm',
    'User'
)
# 新しいシェルを開き直す

対処4: PowerShell 実行ポリシー

PowerShell では .ps1 スクリプトが「Restricted」によって弾かれることがあります。npx.ps1 は PowerShell スクリプトなので、ポリシー次第で実行不可になります。

# 現在のポリシー確認
Get-ExecutionPolicy
# Restricted / AllSigned / RemoteSigned / Unrestricted

# 変更(管理者不要、現在ユーザーのみ)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

# 確認
Get-ExecutionPolicy -List

# 関連エラー:
# npx : このシステムではスクリプトの実行が無効になっているため、ファイル
# C:\Program Files\nodejs\npx.ps1 を読み込むことができません。

対処5: nvm-windows / Volta 経由(バージョン管理)

Node.js のバージョンを切り替えたい / 複数プロジェクトで Node のバージョンが違う場合は、バージョン管理ツール経由が便利です。

# === nvm-windows ===
winget install CoreyButler.NVMforWindows
# または https://github.com/coreybutler/nvm-windows/releases

nvm install 20.11.1
nvm use 20.11.1
node -v
npx -v

# === Volta(モダン、推奨)===
winget install Volta.Volta
volta install node@20
volta install npm
node -v
npx -v

対処6: 古い Node.js で npx が無い

Node.js 5.1 以前には npx が同梱されていません(現在ほぼ無いはず)。手動でインストールします:

# 単体インストール(古い Node 用)
npm install -g npx

# でも 推奨: Node.js を新しい LTS に上げる
nvm install --lts
nvm use lts

FAQ

Q: VS Code のターミナルだけ npx が動かない
A: VS Code を再起動すると PATH が再読み込みされます。それでも駄目なら terminal.integrated.env.windows で PATH を明示。

Q: Git Bash で動くが cmd で動かない
A: Git Bash は独自 PATH を持つので、cmd / PowerShell の PATH に C:\Program Files\nodejs が無い可能性大。対処3 を実施。

Q: Docker コンテナ内で動かない
A: コンテナの Node.js イメージ(node:20-alpine 等)を使えば確実。ホストの Node 設定とは無関係。

編集
Post Share
子ページ

子ページはありません

同階層のページ

同階層のページはありません