Qué significa ENOENT: no such file or directory y cómo solucionarlo
Referencia del error
ENOENT: no such file or directory
Lenguaje
Severidad
MediaCuándo ocurre
ENOENT es un código de error POSIX que significa 'Error NO ENTry' (sin entrada).
Posibles soluciones
Usa path.join(__dirname, 'nombrearchivo') para construir rutas relativas al módulo actual en lugar del directorio de trabajo del proceso. Verifica que el archivo exista con fs.existsSync() antes de leerlo. Cuando el archivo faltante es generado por una herramienta de compilación, asegúrate de que el paso de compilación se ejecutó correctamente antes de que el proceso Node.js arranque.
Errores relacionados
Más detalles
ENOENT es un código de error POSIX que significa 'Error NO ENTry' (sin entrada). En Node.js se lanza cuando una operación del sistema de archivos (leer, escribir, eliminar, renombrar) apunta a una ruta que no existe. Es el equivalente en Node.js de FileNotFoundError de Python.
Por qué ocurre
- •La ruta del archivo es relativa y el directorio de trabajo del proceso no es el que el desarrollador esperaba.
- •El archivo nunca fue creado, fue eliminado, o fue colocado en un directorio diferente.
- •Un error tipográfico en el nombre del archivo o la ruta, incluyendo mayúsculas/minúsculas incorrectas en sistemas de archivos sensibles a ellas.
- •Un paso de compilación que debería generar el archivo falló silenciosamente, dejando la ruta vacía.
Posibles soluciones
Usa path.join(__dirname, 'nombrearchivo') para construir rutas relativas al módulo actual en lugar del directorio de trabajo del proceso. Verifica que el archivo exista con fs.existsSync() antes de leerlo. Cuando el archivo faltante es generado por una herramienta de compilación, asegúrate de que el paso de compilación se ejecutó correctamente antes de que el proceso Node.js arranque.
Ejemplos
Código que causa el error
const fs = require("fs");
const content = fs.readFileSync("./config.json", "utf8");
console.log(content);Error en la terminal
Error: ENOENT: no such file or directory, open './config.json'
at Object.openSync (node:fs:601:18)
at Object.readFileSync (node:fs:469:35)Código corregido
const fs = require("fs");
const path = require("path");
const configPath = path.join(__dirname, "config.json");
if (!fs.existsSync(configPath)) {
console.error("config.json not found at", configPath);
process.exit(1);
}
const content = fs.readFileSync(configPath, "utf8");
console.log(content);Practica en inglés
¿Cómo le explicarías un ENOENT: no such file or directory a un compañero dev? Elige la frase correcta:
"I hit an error...
¿Listo para practicar tu inglés en el trabajo?
Lingua-e tiene ejercicios interactivos basados en conversaciones reales de developers: standups, code reviews, retrospectivas y más. Practica hasta que salga solo.
Prueba Lingua-e gratis