Back

Résoudre l'erreur 'sh: command not found: npm' sur macOS et Linux

Résoudre l'erreur 'sh: command not found: npm' sur macOS et Linux

Lorsque vous rencontrez sh: command not found: npm dans votre terminal, cela signifie que votre shell ne parvient pas à localiser l’exécutable npm. Cette erreur apparaît généralement lorsque Node.js n’est pas installé, que npm est absent de votre PATH système, ou que votre configuration shell nécessite une mise à jour. Voici comment diagnostiquer et résoudre ce problème courant de dépannage Node.js sur les systèmes macOS et Linux.

Points clés à retenir

  • L’erreur npm command not found se produit lorsque npm n’est pas dans votre variable d’environnement PATH
  • L’installation de Node.js via des gestionnaires de paquets ou nvm configure automatiquement les paramètres PATH
  • Différents shells (Bash, Zsh, Fish) nécessitent des modifications spécifiques de leurs fichiers de configuration
  • L’utilisation de nvm offre la solution la plus flexible pour gérer plusieurs versions de Node.js

Comprendre l’erreur de PATH npm

L’erreur se produit parce que votre shell recherche les commandes dans les répertoires listés dans la variable d’environnement PATH. Lorsque npm ne se trouve dans aucun de ces répertoires, vous obtenez le message sh: command not found: npm. Cela arrive dans trois scénarios : Node.js n’a jamais été installé, l’installation a échoué partiellement, ou votre configuration PATH est incorrecte.

Diagnostic rapide : Vérifiez votre configuration actuelle

Tout d’abord, vérifiez si Node.js est installé :

node --version

Si Node.js est installé mais que npm ne fonctionne pas, vérifiez si npm existe sur votre système :

which npm

L’absence de résultat signifie que npm n’est pas dans votre PATH. Ensuite, examinez votre configuration PATH actuelle :

echo $PATH

Cela affiche tous les répertoires dans lesquels votre shell recherche des commandes. Si le répertoire de npm n’est pas listé, c’est là votre problème.

Installation de Node.js et npm sur macOS

Utilisation de Homebrew (Recommandé)

Homebrew fournit la méthode d’installation la plus propre pour macOS :

brew install node

Cela installe à la fois Node.js et npm, en configurant automatiquement votre PATH. Vérifiez l’installation :

npm --version

Méthode de téléchargement direct

Alternativement, téléchargez l’installateur depuis nodejs.org. L’installateur macOS gère automatiquement la configuration du PATH, mais vous devrez redémarrer votre terminal par la suite.

Installation de Node.js et npm sur Linux

Systèmes Ubuntu/Debian

Utilisez le gestionnaire de paquets de votre distribution :

sudo apt update
sudo apt install nodejs npm

Systèmes Fedora/RHEL

sudo dnf install nodejs npm

Arch Linux

sudo pacman -S nodejs npm

Après l’installation, vérifiez que npm fonctionne :

npm --version

Correction des problèmes de configuration PATH

Si npm est installé mais affiche toujours l’erreur, vous devez l’ajouter manuellement à votre PATH.

Pour les utilisateurs de Bash

Modifiez votre fichier .bashrc :

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

Pour les utilisateurs de Zsh (par défaut sur macOS)

Modifiez votre fichier .zshrc :

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

Remplacez /usr/local/bin par le chemin réel de votre installation npm. Trouvez-le en utilisant :

find / -name npm 2>/dev/null

Utilisation de Node Version Manager (nvm)

nvm prévient les conflits de versions et les problèmes de PATH en gérant les installations Node.js séparément des paquets système. Cette approche élimine la plupart des erreurs npm command not found.

Installer nvm

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

Installer Node.js via nvm

nvm install node
nvm use node

nvm gère automatiquement la configuration du PATH et permet de basculer entre les versions de Node.js pour différents projets. C’est particulièrement utile lorsque vous travaillez sur des projets nécessitant des versions spécifiques de Node.js.

Dépannage spécifique aux shells

Différents shells peuvent nécessiter des configurations spécifiques :

  • Bash : Vérifiez .bashrc ou .bash_profile
  • Zsh : Vérifiez .zshrc
  • Fish : Vérifiez ~/.config/fish/config.fish

Redémarrez toujours votre terminal ou exécutez source sur le fichier de configuration après avoir effectué des modifications.

Vérification de votre correction

Après avoir appliqué une solution, vérifiez que npm fonctionne correctement :

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

Testez l’installation d’un paquet pour garantir le bon fonctionnement complet :

npm install -g npm@latest

Pièges courants à éviter

N’utilisez pas sudo avec les installations globales npm sauf si c’est absolument nécessaire — cela peut causer des problèmes de permissions par la suite. Si vous rencontrez des erreurs de permissions, envisagez de changer le répertoire par défaut de npm ou d’utiliser npx au lieu d’installations globales.

Pour les environnements d’entreprise avec des proxies, configurez les paramètres proxy de npm :

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

Conclusion

L’erreur sh: command not found: npm est simple à corriger une fois que vous en comprenez la cause. Que ce soit via des gestionnaires de paquets, une installation directe, ou nvm, faire fonctionner npm implique de s’assurer que Node.js est installé et que votre PATH est configuré correctement. L’utilisation de nvm offre la solution la plus flexible, en particulier pour les développeurs gérant plusieurs projets. Avec npm fonctionnant correctement, vous pouvez vous concentrer sur le développement plutôt que sur le dépannage de votre environnement de développement.

FAQ

Différents terminaux peuvent utiliser différentes configurations shell. Vérifiez quel shell vous utilisez avec echo $SHELL et assurez-vous que le PATH est défini dans le bon fichier de configuration pour ce shell.

Oui, l'utilisation de nvm vous permet d'installer et de basculer entre plusieurs versions de Node.js et npm. Chaque version est isolée, évitant les conflits entre projets nécessitant différentes versions.

Installez les paquets localement pour les dépendances de projet et globalement uniquement pour les outils en ligne de commande que vous utilisez sur plusieurs projets. L'installation locale prévient les conflits de versions et les problèmes de permissions.

Changez le répertoire par défaut de npm pour un répertoire dont vous êtes propriétaire en utilisant npm config set prefix ou utilisez npx pour exécuter des paquets sans les installer globalement. Cela évite complètement les problèmes de permissions.

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