Módulos y Sistema de Archivos
Node.js tiene un sistema de módulos para dividir el código en archivos reutilizables. El formato clásico CommonJS usa require() para importar y module.exports para exportar. El formato moderno ESM (ES Modules) usa import/export como en el navegador. En Node.js moderno (14+) puedes usar ESM con la extensión .mjs o con "type": "module" en package.json.
El módulo fs (file system) permite leer, escribir, crear y eliminar archivos y directorios. El módulo path construye rutas de forma portable entre sistemas operativos: path.join("carpeta", "archivo.txt") funciona igual en Windows (backslash) y Linux/macOS (slash). Estos dos módulos son los más usados de la librería estándar de Node.
const fs = require('fs');
const path = require('path');
// __dirname = directorio del archivo actual
// __filename = ruta completa del archivo actual
const rutaArchivo = path.join(__dirname, 'data', 'usuarios.json');
const rutaResuelta = path.resolve('./config.json'); // ruta absoluta
console.log(path.basename(rutaArchivo)); // 'usuarios.json'
console.log(path.extname(rutaArchivo)); // '.json'
console.log(path.dirname(rutaArchivo)); // ruta del directorio
// Lectura asíncrona (NO bloquea el event loop) ✅
fs.readFile(rutaArchivo, 'utf8', (err, data) => {
if (err) {
console.error('Error leyendo archivo:', err.message);
return;
}
const usuarios = JSON.parse(data);
console.log('Usuarios cargados:', usuarios.length);
});
// Escritura asíncrona
const contenido = JSON.stringify({ ok: true }, null, 2);
fs.writeFile('salida.json', contenido, 'utf8', (err) => {
if (err) throw err;
console.log('Archivo guardado');
});
// Verificar si existe (síncrono, ok para startup)
if (fs.existsSync('./config.json')) {
console.log('Config encontrada');
}
// Crear directorio (con recursive para no fallar si existe)
fs.mkdir('./uploads/avatars', { recursive: true }, (err) => {
if (!err) console.log('Directorio creado');
});
Practica esta lección
Resuelve los ejercicios del curso de Node.js y Express en la app, gratis y con corrección automática.
Empezar a practicar