Planificador de tareas en TypeScript: guía detallada de la biblioteca node-schedule

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Planificador de tareas TypeScript: automatización con node-schedule



En el desarrollo web moderno, a menudo surge la necesidad de ejecutar código según un horario: enviar notificaciones, limpiar la caché, generar informes o sincronizar datos. Para proyectos TypeScript, una de las bibliotecas más potentes y flexibles es node-schedule. Es un planificador de tareas que permite programar ejecuciones tanto únicas como recurrentes utilizando expresiones cron, fechas o reglas personalizadas.



Instalación y configuración



Para instalar la biblioteca, ejecute el comando:



npm install node-schedulenpm install @types/node-schedule --save-dev


Después de la instalación, puede importar el módulo en su archivo TypeScript:



import * as schedule from 'node-schedule';


Funcionalidades principales de node-schedule



  • Programación con expresiones cron — soporte para máscaras clásicas de 6 campos (segundos, minutos, horas, día del mes, mes, día de la semana).
  • Tareas únicas — ejecución de código en un momento específico.
  • Reglas recurrentes — creación de intervalos personalizados usando el objeto RecurrenceRule.
  • Cancelación de tareas — posibilidad de detener la ejecución de una tarea programada.
  • Soporte de zonas horarias — ejecución precisa en la zona horaria especificada.


Ejemplo 1: Planificador cron simple



Creemos una tarea que se ejecute cada minuto:



import * as schedule from 'node-schedule';

const job = schedule.scheduleJob('*/1 * * * *', () => { console.log('Tarea ejecutada:', new Date().toLocaleString());});

// Después de 5 minutos cancelamos la tareasetTimeout(() => { job.cancel(); console.log('Tarea cancelada');}, 5 * 60 * 1000);


En este ejemplo, la expresión cron '*/1 * * * *' significa «cada minuto». Observe el orden de los campos: segundos, minutos, horas, día del mes, mes, día de la semana.



Ejemplo 2: Tarea con fecha específica



Puede programar la ejecución para un momento específico en el futuro:



import * as schedule from 'node-schedule';

const date = new Date(2025, 11, 31, 23, 59, 0); // 31 de diciembre de 2025, 23:59

const job = schedule.scheduleJob(date, () => { console.log('¡Año Nuevo ha llegado!');});

// Verificamos si la tarea está programadaconsole.log('Tarea activa:', job !== null);


Ejemplo 3: Regla recurrente (RecurrenceRule)



Si las expresiones cron le parecen complejas, use el objeto RecurrenceRule para crear reglas claras:



import * as schedule from 'node-schedule';

const rule = new schedule.RecurrenceRule();rule.hour = 9;rule.minute = 30;rule.dayOfWeek = [1, 3, 5]; // Lunes, Miércoles, Viernes

const job = schedule.scheduleJob(rule, () => { console.log('Reunión matutina a las 9:30 los días laborables (Lun, Mié, Vie)');});

// Para cancelar después de un mes:setTimeout(() => job.cancel(), 30 * 24 * 60 * 60 * 1000);


Ejemplo 4: Tarea con zona horaria



Si su aplicación funciona en diferentes zonas horarias, especifique la zona horaria:



import * as schedule from 'node-schedule';

const job = schedule.scheduleJob( { hour: 8, minute: 0, tz: 'Europe/Moscow' }, () => { console.log('Mañana en Moscú: 8:00'); });


Manejo de errores y cancelación de tareas



Siempre prevea el manejo de errores dentro del callback para evitar que la aplicación se caiga:



import * as schedule from 'node-schedule';

const job = schedule.scheduleJob('*/5 * * * *', async () => { try { // Su código asíncrono const data = await fetchDataFromAPI(); console.log('Datos obtenidos:', data); } catch (error) { console.error('Error en el planificador:',

Recommendations