Solucionar 'sh: command not found: npm' en macOS y Linux
Cuando encuentras sh: command not found: npm en tu terminal, significa que tu shell no puede localizar el ejecutable de npm. Este error aparece típicamente cuando Node.js no está instalado, npm no se encuentra en tu PATH del sistema, o tu configuración de shell necesita actualizarse. A continuación te mostramos cómo diagnosticar y solucionar este problema común de resolución de problemas de Node.js en sistemas macOS y Linux.
Puntos Clave
- El error de comando npm no encontrado ocurre cuando npm no está en tu variable de entorno PATH
- Instalar Node.js a través de gestores de paquetes o nvm configura automáticamente los ajustes de PATH
- Diferentes shells (Bash, Zsh, Fish) requieren modificaciones específicas en sus archivos de configuración
- Usar nvm proporciona la solución más flexible para gestionar múltiples versiones de Node.js
Entendiendo el Error de PATH de npm
El error ocurre porque tu shell busca comandos en los directorios listados en la variable de entorno PATH. Cuando npm no está en ninguno de esos directorios, obtienes el mensaje sh: command not found: npm. Esto sucede en tres escenarios: Node.js nunca fue instalado, la instalación falló parcialmente, o tu configuración de PATH es incorrecta.
Diagnóstico Rápido: Verifica tu Configuración Actual
Primero, verifica si Node.js está instalado:
node --version
Si Node.js está instalado pero npm no funciona, verifica si npm existe en tu sistema:
which npm
Si no hay salida significa que npm no está en tu PATH. A continuación, examina tu configuración actual de PATH:
echo $PATH
Esto muestra todos los directorios donde tu shell busca comandos. Si el directorio de npm no está listado, ese es tu problema.
Instalando Node.js y npm en macOS
Usando Homebrew (Recomendado)
Homebrew proporciona el método de instalación más limpio para macOS:
brew install node
Esto instala tanto Node.js como npm, configurando automáticamente tu PATH. Verifica la instalación:
npm --version
Método de Descarga Directa
Alternativamente, descarga el instalador desde nodejs.org. El instalador de macOS maneja la configuración de PATH automáticamente, pero necesitarás reiniciar tu terminal después.
Instalando Node.js y npm en Linux
Sistemas Ubuntu/Debian
Usa el gestor de paquetes de tu distribución:
sudo apt update
sudo apt install nodejs npm
Sistemas Fedora/RHEL
sudo dnf install nodejs npm
Arch Linux
sudo pacman -S nodejs npm
Después de la instalación, verifica que npm funciona:
npm --version
Discover how at OpenReplay.com.
Solucionando Problemas de Configuración de PATH
Si npm está instalado pero aún muestra el error, necesitas agregarlo a tu PATH manualmente.
Para Usuarios de Bash
Edita tu archivo .bashrc:
echo 'export PATH="$PATH:/usr/local/bin"' >> ~/.bashrc
source ~/.bashrc
Para Usuarios de Zsh (Predeterminado en macOS)
Edita tu archivo .zshrc:
echo 'export PATH="$PATH:/usr/local/bin"' >> ~/.zshrc
source ~/.zshrc
Reemplaza /usr/local/bin con la ruta real de instalación de npm. Encuéntrala usando:
find / -name npm 2>/dev/null
Usando Node Version Manager (nvm)
nvm previene conflictos de versiones y problemas de PATH al gestionar las instalaciones de Node.js separadamente de los paquetes del sistema. Este enfoque elimina la mayoría de los errores de comando npm no encontrado.
Instalar nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
Instalar Node.js mediante nvm
nvm install node
nvm use node
nvm maneja automáticamente la configuración de PATH y permite cambiar entre versiones de Node.js para diferentes proyectos. Es particularmente útil cuando trabajas con proyectos que requieren versiones específicas de Node.js.
Resolución de Problemas Específicos por Shell
Diferentes shells pueden requerir configuraciones específicas:
- Bash: Verifica
.bashrco.bash_profile - Zsh: Verifica
.zshrc - Fish: Verifica
~/.config/fish/config.fish
Siempre reinicia tu terminal o ejecuta source en el archivo de configuración después de hacer cambios.
Verificando tu Solución
Después de aplicar cualquier solución, verifica que npm funciona correctamente:
npm --version
npm list -g --depth=0
Prueba instalando un paquete para asegurar la funcionalidad completa:
npm install -g npm@latest
Errores Comunes a Evitar
No uses sudo con instalaciones globales de npm a menos que sea absolutamente necesario—puede causar problemas de permisos más adelante. Si encuentras errores de permisos, considera cambiar el directorio predeterminado de npm o usar npx en lugar de instalaciones globales.
Para entornos corporativos con proxies, configura los ajustes de proxy de npm:
npm config set proxy http://proxy.company.com:8080
npm config set https-proxy http://proxy.company.com:8080
Conclusión
El error sh: command not found: npm es sencillo de solucionar una vez que entiendes su causa. Ya sea a través de gestores de paquetes, instalación directa, o nvm, hacer que npm funcione implica asegurar que Node.js esté instalado y tu PATH esté configurado correctamente. Usar nvm proporciona la solución más flexible, especialmente para desarrolladores que gestionan múltiples proyectos. Con npm funcionando correctamente, puedes enfocarte en construir en lugar de solucionar problemas de tu entorno de desarrollo.
Preguntas Frecuentes
Diferentes terminales pueden usar diferentes configuraciones de shell. Verifica qué shell estás usando con echo $SHELL y asegúrate de que el PATH esté configurado en el archivo de configuración correcto para ese shell.
Sí, usar nvm te permite instalar y cambiar entre múltiples versiones de Node.js y npm. Cada versión está aislada, previniendo conflictos entre proyectos que requieren diferentes versiones.
Instala paquetes localmente para dependencias de proyectos y globalmente solo para herramientas de línea de comandos que uses en todos los proyectos. La instalación local previene conflictos de versiones y problemas de permisos.
Cambia el directorio predeterminado de npm a uno que poseas usando npm config set prefix o usa npx para ejecutar paquetes sin instalarlos globalmente. Esto evita problemas de permisos por completo.
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.