Cómo solucionar el error ENOENT 'no such file or directory' en npm e npx
El mensaje npm ERR! code ENOENT (Error NO ENtity) indica que el gestor de paquetes de Node.js intentó abrir o modificar un archivo o directorio que no existe en la ruta especificada. Ocurre comúnmente durante npm install, npx o la ejecución de scripts al faltar el archivo package.json, existir referencias obsoletas en package-lock.json o haber una caché corrupta.
El Diagnóstico Rápido
npm ERR! code ENOENT syscall open al ejecutar comandos de npm: Falta package.json en el directorio actual, versión desincronizada de package-lock.json o datos corruptos en la caché localpwd, limpiar la caché de npm con --force y regenerar los módulos y el lockfileLa Solución Paso a Paso
-
1
Paso 1: Verificar el directorio de trabajo actual
Uno de los desencadenantes más comunes es ejecutar
npm installfuera de la carpeta raíz del proyecto donde residepackage.json. Verifica tu ruta actual:BASH# Comprobar la carpeta actual en Linux/macOS pwd # Listar archivos para verificar la presencia de package.json ls -la package.jsonSi no existe un archivo
package.jsonen el directorio, muévete al directorio correcto o inicializa un nuevo proyecto Node.js:BASH# Crear un package.json básico si estás iniciando un nuevo proyecto npm init -y -
2
Paso 2: Limpiar la caché de npm
Los datos persistentes o fragmentados dentro de la caché global de npm pueden hacer que busque archivos en ubicaciones temporales inexistentes. Ejecuta el comando de limpieza de caché:
BASH# Forzar la limpieza de la caché de npm npm cache clean --force -
3
Paso 3: Eliminar node_modules y regenerar package-lock.json
Si el archivo
package-lock.jsoncontiene rutas relativas rotas o referencias a versiones antiguas de binarios instalados ennode_modules, lo ideal es realizar una reinstalación limpia:BASH# En Linux / macOS: eliminar la carpeta de módulos y el archivo lockfile rm -rf node_modules package-lock.json # En Windows (PowerShell): # Remove-Item -Recurse -Force node_modules, package-lock.json # Reinstalar todas las dependencias npm install -
4
Paso 4: Corregir permisos y carpetas globales de npm (para npx)
Si el error
ENOENTse produce al ejecutar herramientas globales mediantenpx(por ejemplonpx create-react-app), puede deberse a que el directorio temporalnpm-cachecarezca de la estructura adecuada. Restablece la ruta temporal ejecutando:BASH# Verificar la ruta global de npm npm config get prefix # Reconfigurar permisos si experimentas bloqueos de acceso en Linux/macOS sudo chown -R $(whoami) ~/.npm
Consejo de Prevención
Prácticas de seguridad recomendadas:
- Evitar usar
sudo npm install: Ejecutar comandos de npm consudoaltera la propiedad de los archivos en~/.npmy genera erroresENOENTo permisos denegados en ejecuciones posteriores. - Mantener npm actualizado: Actualiza periódicamente el cliente oficial de npm para beneficiarte de correcciones en el manejo del sistema de archivos:
BASH
npm install -g npm@latest - Incluir
package-lock.jsonen Git: Sube siempre el lockfile al repositorio para asegurar que todo el equipo trabaje con las mismas versiones e índices de archivos.