ENOENT (errno 2)
errno 2
Mensaje oficial (tal como aparece en pantalla): No such file or directory
También se busca como: No such file or directory, errno 2, ENOENT: no such file or directory, npm ERR! code ENOENT, FileNotFoundError
Qué significa
ENOENT, 'No such file or directory' (errno 2), significa que una ruta que usa el programa no existe. Es uno de los errores más comunes en shells, Node.js ('ENOENT: no such file or directory, open ...'), Python (FileNotFoundError) y herramientas de compilación. A veces lo que falta no es el archivo que esperas, sino un intérprete o una biblioteca que necesita.
Se aplica a: Linux, macOS (BSD errno), WSL, Contenedores Docker
Cómo solucionar ENOENT (errno 2)
- Imprime la ruta exacta del error y compruébala con 'ls -la <path>'; ojo con las erratas y las mayúsculas, porque las rutas de Linux distinguen entre mayúsculas y minúsculas
- Comprueba el directorio de trabajo actual con 'pwd'; las rutas relativas se resuelven desde donde se inició el programa, no desde la carpeta del script
- Para 'npm ERR! enoent', ejecuta el comando en la carpeta que contiene package.json y luego 'npm install' si falta node_modules
- Si un script existe pero al ejecutarlo da 'No such file or directory', comprueba que el intérprete del shebang exista y corrige los finales de línea de Windows con 'dos2unix script.sh'
- Busca enlaces simbólicos rotos con 'ls -l' y 'readlink -f <path>'
- Rastrea qué ruta falta con 'strace -f -e trace=openat,execve <command> 2>&1 | grep ENOENT'
- En Docker, asegúrate de que el archivo se copió a la imagen o se montó, y de que las rutas coinciden con las del contenedor, no con las del host
Por qué ocurre
Cualquier búsqueda de ruta que falla por un componente inexistente devuelve ENOENT: archivos eliminados o nunca creados, directorio de trabajo incorrecto, enlaces simbólicos rotos, intérpretes ausentes en un shebang o archivos que solo existen en el host y no en un contenedor.
Preguntas frecuentes
¿Por qué aparece 'No such file or directory' si el archivo existe?
Normalmente el shebang apunta a un intérprete que falta, el script tiene finales de línea CRLF o a un binario de 32 bits le falta su cargador. 'file script' y 'head -1 script' ayudan a identificarlo.
¿Cómo soluciono ENOENT en Node.js?
Construye las rutas con path.join(__dirname, 'file') en lugar de rutas relativas y comprueba que el archivo existe en la compilación desplegada.
Errores relacionados
Fuente: Linux kernel errno.h · soluciones redactadas y revisadas por los editores (consulta nuestra política editorial)
Última actualización: