[SOLUCIONADO] Error 'npm ERR! code EACCES permission denied' en Linux
El Diagnóstico Rápido
El error npm ERR! code EACCES permission denied (o EACCES: permission denied, access '/usr/local/lib/node_modules') ocurre al intentar instalar paquetes globales con npm install -g <paquete>. Sucede porque el directorio del sistema pertenece al usuario root, impidiendo que tu usuario normal escriba en él.
Solución Rápida (Recomendada): Cambia la ubicación del directorio global de npm a tu carpeta de usuario local:
BASHmkdir ~/.npm-global npm config set prefix '~/.npm-global' echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc && source ~/.bashrc
La Solución Paso a Paso
Método 1: Reconfigurar el directorio predeterminado de NPM (Mejor opción)
Jamás debes instalar paquetes de npm usando sudo, ya que expone tu sistema a riesgos de seguridad y corrompe los permisos de futuros comandos.
-
1
Paso 1
Crear un directorio dedicado para paquetes globales en tu HOME:
BASHmkdir -p ~/.npm-global -
2
Paso 2
Configurar NPM para usar la nueva carpeta:
BASHnpm config set prefix '~/.npm-global' -
3
Paso 3
Agregar la nueva ruta a tus variables de entorno PATH: Si usas Bash (
~/.bashrc):BASHecho 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc source ~/.bashrcSi usas Zsh (
~/.zshrc):BASHecho 'export PATH=~/.npm-global/bin:$PATH' >> ~/.zshrc source ~/.zshrc -
4
Paso 4
Probar la instalación global:
BASHnpm install -g typescript ts-node
Método 2: Utilizar Node Version Manager (NVM)
Usar NVM es la práctica estándar en la industria para desarrollo con Node.js. NVM instala Node.js y npm dentro del espacio del usuario actual, eliminando por completo cualquier problema de permisos.
# 1. Instalar NVM
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
# 2. Recargar tu terminal
source ~/.bashrc
# 3. Instalar la versión LTS de Node.js
nvm install --lts
nvm use --lts
Consejo de Prevención
Prácticas de seguridad recomendadas:
- Evita ejecutar
sudo npm install -gbajo cualquier circunstancia. - Si por error usaste
sudo npmanteriormente y corrompiste los permisos de tu carpeta~/.npm, restaura el propietario con:BASHsudo chown -R $USER:$USER ~/.npm