できない.dev

npm install -g したコマンドが command not found で実行できない

グローバルインストール先の bin ディレクトリが PATH に入っていないのが典型原因。
npm prefix -g で実際のインストール先を確認し、PATH に追加するか nvm 経由の構成に揃えると解決する。

#npm#global-install#command-not-found#path#nvm

公開:

要約

npm install -g some-cli は成功するのに some-cli の実行が command not found になるのは、ほとんどの場合グローバルインストール先(prefix)の bin ディレクトリが PATH に入っていないため。
まず npm prefix -g でインストール先を確認し、PATH と突き合わせるのが最短の切り分け。

よくある原因

  1. bin ディレクトリが PATH に無い: Linux / macOS では $(npm prefix -g)/bin、Windows では prefix 直下に実行ファイルが置かれるが、そこが PATH に含まれていない。
  2. nvm のバージョン違い: nvm は Node のバージョンごとに独立したグローバル領域を持つため、nvm use で切り替えた先にはコマンドが存在しない。
  3. prefix 変更後の PATH 未更新: EACCES 対策で npm config set prefix ~/.npm-global と変更したのに、PATH への追記やシェル再起動をしていない。
  4. Windows の PATH 設定漏れ: 環境変数の編集ミスなどで npm のグローバルディレクトリが PATH から消えている。

解決策

1. インストール先を確認して PATH に追加する

npm prefix -g
# 例: /home/user/.npm-global
 
echo 'export PATH="$HOME/.npm-global/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

返ってきたディレクトリの bin(Windows は prefix 直下)が PATH に入っているかを確認する。

2. nvm のバージョンを揃える

nvm current
npm install -g some-cli

npm 公式ドキュメントも nvm などのバージョンマネージャ利用を推奨している。
nvm 環境では PATH は自動で切り替わるため、「使うバージョンで入れる」ことだけ守ればよい。

3. シェルのキャッシュをクリアする

hash -r

PATH を直した直後は bash / zsh がコマンドの場所をキャッシュしたままのことがある。
新しいターミナルを開くのでもよい。

4. npx で代替する

npx some-cli --version

たまにしか使わないツールなら npx で都度実行すれば PATH の問題自体が起きない。

この記事は役立ちましたか?