Back

Behebung von 'sh: command not found: npm' unter macOS und Linux

Behebung von 'sh: command not found: npm' unter macOS und Linux

Wenn Sie in Ihrem Terminal auf sh: command not found: npm stoßen, bedeutet dies, dass Ihre Shell die npm-Programmdatei nicht finden kann. Dieser Fehler tritt typischerweise auf, wenn Node.js nicht installiert ist, npm im PATH Ihres Systems fehlt oder Ihre Shell-Konfiguration aktualisiert werden muss. Hier erfahren Sie, wie Sie dieses häufige Node.js-Fehlerbehebungsproblem auf macOS- und Linux-Systemen diagnostizieren und beheben können.

Wichtigste Erkenntnisse

  • Der Fehler “npm command not found” tritt auf, wenn npm nicht in Ihrer PATH-Umgebungsvariable enthalten ist
  • Die Installation von Node.js über Paketmanager oder nvm konfiguriert die PATH-Einstellungen automatisch
  • Verschiedene Shells (Bash, Zsh, Fish) erfordern spezifische Änderungen an den Konfigurationsdateien
  • Die Verwendung von nvm bietet die flexibelste Lösung für die Verwaltung mehrerer Node.js-Versionen

Den npm-PATH-Fehler verstehen

Der Fehler tritt auf, weil Ihre Shell in den Verzeichnissen nach Befehlen sucht, die in der PATH-Umgebungsvariable aufgelistet sind. Wenn npm in keinem dieser Verzeichnisse vorhanden ist, erhalten Sie die Meldung sh: command not found: npm. Dies geschieht in drei Szenarien: Node.js wurde nie installiert, die Installation ist teilweise fehlgeschlagen oder Ihre PATH-Konfiguration ist falsch.

Schnelldiagnose: Überprüfen Sie Ihre aktuelle Konfiguration

Überprüfen Sie zunächst, ob Node.js installiert ist:

node --version

Wenn Node.js installiert ist, npm aber nicht funktioniert, prüfen Sie, ob npm auf Ihrem System vorhanden ist:

which npm

Keine Ausgabe bedeutet, dass npm nicht in Ihrem PATH enthalten ist. Untersuchen Sie als Nächstes Ihre aktuelle PATH-Konfiguration:

echo $PATH

Dies zeigt alle Verzeichnisse an, die Ihre Shell nach Befehlen durchsucht. Wenn das npm-Verzeichnis nicht aufgeführt ist, liegt hier Ihr Problem.

Installation von Node.js und npm unter macOS

Verwendung von Homebrew (Empfohlen)

Homebrew bietet die sauberste Installationsmethode für macOS:

brew install node

Dies installiert sowohl Node.js als auch npm und konfiguriert automatisch Ihren PATH. Überprüfen Sie die Installation:

npm --version

Direkte Download-Methode

Alternativ können Sie das Installationsprogramm von nodejs.org herunterladen. Das macOS-Installationsprogramm übernimmt die PATH-Konfiguration automatisch, aber Sie müssen danach Ihr Terminal neu starten.

Installation von Node.js und npm unter Linux

Ubuntu/Debian-Systeme

Verwenden Sie den Paketmanager Ihrer Distribution:

sudo apt update
sudo apt install nodejs npm

Fedora/RHEL-Systeme

sudo dnf install nodejs npm

Arch Linux

sudo pacman -S nodejs npm

Überprüfen Sie nach der Installation, ob npm funktioniert:

npm --version

Behebung von PATH-Konfigurationsproblemen

Wenn npm installiert ist, aber immer noch den Fehler anzeigt, müssen Sie es manuell zu Ihrem PATH hinzufügen.

Für Bash-Benutzer

Bearbeiten Sie Ihre .bashrc-Datei:

echo 'export PATH="$PATH:/usr/local/bin"' >> ~/.bashrc
source ~/.bashrc

Für Zsh-Benutzer (macOS-Standard)

Bearbeiten Sie Ihre .zshrc-Datei:

echo 'export PATH="$PATH:/usr/local/bin"' >> ~/.zshrc
source ~/.zshrc

Ersetzen Sie /usr/local/bin durch Ihren tatsächlichen npm-Installationspfad. Finden Sie ihn mit:

find / -name npm 2>/dev/null

Verwendung des Node Version Managers (nvm)

nvm verhindert Versionskonflikte und PATH-Probleme, indem es Node.js-Installationen getrennt von Systempaketen verwaltet. Dieser Ansatz eliminiert die meisten “npm command not found”-Fehler.

nvm installieren

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash

Node.js über nvm installieren

nvm install node
nvm use node

nvm übernimmt automatisch die PATH-Konfiguration und ermöglicht das Wechseln zwischen Node.js-Versionen für verschiedene Projekte. Dies ist besonders nützlich, wenn Sie mit Projekten arbeiten, die spezifische Node.js-Versionen erfordern.

Shell-spezifische Fehlerbehebung

Verschiedene Shells können spezifische Konfigurationen erfordern:

  • Bash: Überprüfen Sie .bashrc oder .bash_profile
  • Zsh: Überprüfen Sie .zshrc
  • Fish: Überprüfen Sie ~/.config/fish/config.fish

Starten Sie Ihr Terminal immer neu oder führen Sie source auf der Konfigurationsdatei aus, nachdem Sie Änderungen vorgenommen haben.

Überprüfung Ihrer Lösung

Überprüfen Sie nach Anwendung einer Lösung, ob npm korrekt funktioniert:

npm --version
npm list -g --depth=0

Testen Sie die Installation eines Pakets, um die vollständige Funktionalität sicherzustellen:

npm install -g npm@latest

Häufige Fehler, die Sie vermeiden sollten

Verwenden Sie sudo nicht bei globalen npm-Installationen, es sei denn, es ist absolut notwendig – dies kann später zu Berechtigungsproblemen führen. Wenn Sie auf Berechtigungsfehler stoßen, erwägen Sie, das Standardverzeichnis von npm zu ändern oder npx anstelle von globalen Installationen zu verwenden.

Für Unternehmensumgebungen mit Proxys konfigurieren Sie die Proxy-Einstellungen von npm:

npm config set proxy http://proxy.company.com:8080
npm config set https-proxy http://proxy.company.com:8080

Fazit

Der Fehler sh: command not found: npm ist einfach zu beheben, sobald Sie seine Ursache verstehen. Ob über Paketmanager, direkte Installation oder nvm – npm zum Laufen zu bringen bedeutet sicherzustellen, dass Node.js installiert ist und Ihr PATH korrekt konfiguriert ist. Die Verwendung von nvm bietet die flexibelste Lösung, insbesondere für Entwickler, die mehrere Projekte verwalten. Mit einem ordnungsgemäß funktionierenden npm können Sie sich auf das Entwickeln konzentrieren, anstatt Ihre Entwicklungsumgebung zu debuggen.

Häufig gestellte Fragen (FAQs)

Verschiedene Terminals können unterschiedliche Shell-Konfigurationen verwenden. Überprüfen Sie mit echo $SHELL, welche Shell Sie verwenden, und stellen Sie sicher, dass der PATH in der richtigen Konfigurationsdatei für diese Shell gesetzt ist.

Ja, die Verwendung von nvm ermöglicht es Ihnen, mehrere Node.js- und npm-Versionen zu installieren und zwischen ihnen zu wechseln. Jede Version ist isoliert, wodurch Konflikte zwischen Projekten verhindert werden, die unterschiedliche Versionen erfordern.

Installieren Sie Pakete lokal für Projektabhängigkeiten und global nur für Kommandozeilen-Tools, die Sie projektübergreifend verwenden. Lokale Installation verhindert Versionskonflikte und Berechtigungsprobleme.

Ändern Sie das Standardverzeichnis von npm in eines, das Ihnen gehört, mit npm config set prefix oder verwenden Sie npx, um Pakete auszuführen, ohne sie global zu installieren. Dies vermeidet Berechtigungsprobleme vollständig.

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.

OpenReplay