Introduction
Les tâches Cron permettent d'exécuter automatiquement des scripts à intervalles définis, essentielles pour les sauvegardes, les rapports ou la maintenance. En 2026, leur intégration avec Node.js offre une flexibilité accrue pour les applications modernes. Ce tutoriel intermédiaire vous guide pas à pas pour créer des jobs fiables, du crontab système jusqu'à l'implémentation avec node-cron. Vous apprendrez à gérer les erreurs, les logs et la scalabilité. Une bonne maîtrise évite les pannes silencieuses et optimise les ressources serveur.
Prérequis
- Node.js 20+
- Connaissances de base en TypeScript
- Accès à un serveur Linux ou WSL
- npm ou pnpm installé
Installation de node-cron
npm install node-cron
npm install --save-dev @types/node-cronCette commande installe le package node-cron pour gérer les tâches planifiées directement dans Node.js, avec les types TypeScript pour un développement sécurisé.
Configuration du job Cron basique
import cron from 'node-cron';
cron.schedule('0 2 * * *', () => {
console.log('Exécution de la sauvegarde quotidienne à 2h');
// Logique de backup ici
}, {
scheduled: true,
timezone: "Europe/Paris"
});Ce code planifie une tâche tous les jours à 2h du matin avec le fuseau horaire français. Le flag scheduled active le job immédiatement.
Ajout de gestion d'erreurs
import cron from 'node-cron';
cron.schedule('0 2 * * *', async () => {
try {
await performBackup();
console.log('Sauvegarde réussie');
} catch (error) {
console.error('Erreur backup:', error);
// Envoyer alerte Slack ou email
}
}, { timezone: "Europe/Paris" });L'utilisation de try/catch empêche les crashes silencieux et permet d'intégrer des notifications en cas d'échec.
Création d'un fichier de configuration
export const cronConfig = {
backup: '0 2 * * *',
report: '0 9 * * 1',
cleanup: '0 4 * * 0'
} as const;Centraliser les expressions cron dans un fichier de config facilite la maintenance et évite les erreurs de duplication.
Job de nettoyage avancé
import cron from 'node-cron';
import { cleanupOldFiles } from '../utils/files';
cron.schedule(cronConfig.cleanup, async () => {
const deleted = await cleanupOldFiles(30);
console.log(`${deleted} fichiers supprimés`);
}, { timezone: "Europe/Paris" });Ce job hebdomadaire supprime les fichiers de plus de 30 jours, illustrant une tâche de maintenance concrète et réutilisable.
Bonnes pratiques
- Toujours définir un timezone explicite
- Utiliser des logs structurés avec des identifiants de job
- Limiter la durée d'exécution des tâches
- Tester les jobs en environnement de staging
- Surveiller avec des outils comme PM2 ou Datadog
Erreurs courantes à éviter
- Oublier la gestion des erreurs async (jobs silencieux)
- Utiliser des expressions cron invalides sans validation
- Ne pas isoler les tâches longues qui bloquent l'event loop
- Ignorer les permissions des fichiers exécutés par cron
Pour aller plus loin
Explorez les patterns avancés de scalabilité et monitoring dans nos formations Learni.