macOSとLinuxで「sh: command not found: npm」を修正する方法
ターミナルでsh: command not found: npmというエラーに遭遇した場合、これはシェルがnpmの実行可能ファイルを見つけられないことを意味します。このエラーは通常、Node.jsがインストールされていない、npmがシステムのPATHに含まれていない、またはシェルの設定を更新する必要がある場合に表示されます。ここでは、macOSとLinuxシステムでこの一般的なNode.jsトラブルシューティング問題を診断し、修正する方法を説明します。
重要なポイント
- npmコマンドが見つからないエラーは、npmがPATH環境変数に含まれていない場合に発生します
- パッケージマネージャーやnvmを通じてNode.jsをインストールすると、PATH設定が自動的に構成されます
- 異なるシェル(Bash、Zsh、Fish)では、特定の設定ファイルの変更が必要です
- nvmを使用すると、複数のNode.jsバージョンを管理するための最も柔軟なソリューションが提供されます
npm PATHエラーの理解
このエラーは、シェルがPATH環境変数にリストされているディレクトリ内でコマンドを検索するために発生します。npmがそれらのディレクトリのいずれにも存在しない場合、sh: command not found: npmというメッセージが表示されます。これは3つのシナリオで発生します:Node.jsがインストールされていない、インストールが部分的に失敗した、またはPATH設定が正しくない場合です。
クイック診断:現在のセットアップを確認する
まず、Node.jsがインストールされているか確認します:
node --version
Node.jsがインストールされているがnpmが動作しない場合、npmがシステムに存在するか確認します:
which npm
出力がない場合、npmがPATHに含まれていません。次に、現在のPATH設定を確認します:
echo $PATH
これにより、シェルがコマンドを検索するすべてのディレクトリが表示されます。npmのディレクトリがリストされていない場合、それが問題です。
macOSでのNode.jsとnpmのインストール
Homebrewを使用する方法(推奨)
Homebrewは、macOSで最もクリーンなインストール方法を提供します:
brew install node
これによりNode.jsとnpmの両方がインストールされ、PATHが自動的に設定されます。インストールを確認します:
npm --version
直接ダウンロード方法
または、nodejs.orgからインストーラーをダウンロードします。macOSインストーラーはPATH設定を自動的に処理しますが、その後ターミナルを再起動する必要があります。
LinuxでのNode.jsとnpmのインストール
Ubuntu/Debianシステム
ディストリビューションのパッケージマネージャーを使用します:
sudo apt update
sudo apt install nodejs npm
Fedora/RHELシステム
sudo dnf install nodejs npm
Arch Linux
sudo pacman -S nodejs npm
インストール後、npmが動作することを確認します:
npm --version
Discover how at OpenReplay.com.
PATH設定の問題を修正する
npmがインストールされているがエラーが表示される場合、手動でPATHに追加する必要があります。
Bashユーザーの場合
.bashrcファイルを編集します:
echo 'export PATH="$PATH:/usr/local/bin"' >> ~/.bashrc
source ~/.bashrc
Zshユーザーの場合(macOSのデフォルト)
.zshrcファイルを編集します:
echo 'export PATH="$PATH:/usr/local/bin"' >> ~/.zshrc
source ~/.zshrc
/usr/local/binを実際のnpmインストールパスに置き換えてください。次のコマンドで見つけることができます:
find / -name npm 2>/dev/null
Node Version Manager(nvm)の使用
nvmは、システムパッケージとは別にNode.jsのインストールを管理することで、バージョンの競合とPATHの問題を防ぎます。このアプローチにより、ほとんどのnpmコマンドが見つからないエラーが解消されます。
nvmをインストールする
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
nvm経由でNode.jsをインストールする
nvm install node
nvm use node
nvmはPATH設定を自動的に処理し、異なるプロジェクト用にNode.jsバージョンを切り替えることができます。特定のNode.jsバージョンを必要とするプロジェクトで作業する場合に特に便利です。
シェル固有のトラブルシューティング
異なるシェルでは特定の設定が必要になる場合があります:
- Bash:
.bashrcまたは.bash_profileを確認 - Zsh:
.zshrcを確認 - Fish:
~/.config/fish/config.fishを確認
変更後は常にターミナルを再起動するか、設定ファイルでsourceを実行してください。
修正の確認
いずれかのソリューションを適用した後、npmが正しく動作することを確認します:
npm --version
npm list -g --depth=0
完全な機能を確保するために、パッケージのインストールをテストします:
npm install -g npm@latest
避けるべき一般的な落とし穴
絶対に必要でない限り、npmのグローバルインストールでsudoを使用しないでください。後で権限の問題を引き起こす可能性があります。権限エラーが発生した場合は、npmのデフォルトディレクトリを変更するか、グローバルインストールの代わりにnpxを使用することを検討してください。
プロキシを使用する企業環境では、npmのプロキシ設定を構成します:
npm config set proxy http://proxy.company.com:8080
npm config set https-proxy http://proxy.company.com:8080
まとめ
sh: command not found: npmエラーは、その原因を理解すれば簡単に修正できます。パッケージマネージャー、直接インストール、またはnvmのいずれを使用する場合でも、npmを動作させるには、Node.jsがインストールされ、PATHが正しく設定されていることを確認する必要があります。nvmを使用すると、特に複数のプロジェクトを管理する開発者にとって最も柔軟なソリューションが提供されます。npmが適切に機能すれば、開発環境のトラブルシューティングではなく、構築に集中できます。
よくある質問
異なるターミナルは異なるシェル設定を使用する場合があります。echo $SHELLで使用しているシェルを確認し、そのシェルの正しい設定ファイルにPATHが設定されていることを確認してください。
はい、nvmを使用すると、複数のNode.jsとnpmバージョンをインストールして切り替えることができます。各バージョンは分離されており、異なるバージョンを必要とするプロジェクト間の競合を防ぎます。
プロジェクトの依存関係にはローカルにインストールし、複数のプロジェクトで使用するコマンドラインツールのみグローバルにインストールしてください。ローカルインストールはバージョンの競合と権限の問題を防ぎます。
npm config set prefixを使用して、npmのデフォルトディレクトリを所有するディレクトリに変更するか、npxを使用してグローバルにインストールせずにパッケージを実行します。これにより、権限の問題を完全に回避できます。
Understand every bug
Uncover frustrations, understand bugs and fix slowdowns like never before with OpenReplay — the open-source session replay tool for developers. Self-host it in minutes, and have complete control over your customer data. Check our GitHub repo and join the thousands of developers in our community.