Что такое node-cron?
node-cron — это легковесная библиотека для Node.js, которая позволяет выполнять JavaScript-функции по расписанию, используя синтаксис cron-выражений из UNIX-систем. Она идеально подходит для автоматизации рутинных задач: очистки кэша, отправки email-рассылок, резервного копирования баз данных или мониторинга сервера.
Зачем нужен планировщик задач?
В веб-приложениях часто требуется выполнять код в определённое время, а не только по запросу пользователя. Вместо того чтобы использовать внешние сервисы (вроде cron на сервере), node-cron работает прямо внутри вашего Node.js-процесса. Это упрощает развёртывание, не требует настройки системного планировщика и идеально подходит для контейнеризированных приложений (Docker, Kubernetes).
Установка
Установка через npm выполняется одной командой:
npm install node-cronПосле установки библиотека готова к использованию — никаких дополнительных зависимостей не требуется.
Основные функции
- Гибкое расписание — поддержка стандартных cron-паттернов (минуты, часы, дни, месяцы, дни недели).
- Запуск и остановка — каждая задача может быть запущена или остановлена по требованию.
- Обработка ошибок — можно задать колбэк для логирования ошибок без краша приложения.
- Простой синтаксис — всего два метода:
scheduleиvalidate.
Пример кода на JavaScript (Node.js)
Создадим задачу, которая каждую минуту выводит в консоль текущее время:
const cron = require('node-cron');
// Задача выполняется каждую минуту: '* * * * *'
cron.schedule('* * * * *', () => {
console.log('Задача выполнена:', new Date().toLocaleString());
});
console.log('Планировщик запущен. Нажмите Ctrl+C для выхода.');Более сложный пример — отправка отчёта каждый день в 8 утра:
const cron = require('node-cron');
cron.schedule('0 8 * * *', () => {
console.log('Отправка ежедневного отчёта...');
// Здесь вызываете функцию отправки email
}, {
scheduled: true,
timezone: 'Europe/Moscow'
});Проверка корректности cron-выражения:
const isValid = cron.validate('*/5 * * * *');
console.log(isValid); // trueКогда использовать node-cron?
- Автоматизация бэкапов — создание дампа базы данных каждую ночь.
- Периодическая очистка — удаление устаревших сессий или временных файлов.
- Мониторинг — проверка доступности сервисов и отправка алертов.
- Рассылки — отправка писем по расписанию (например, дайджестов).
- Обновление кэша — перестроение кэша в непиковые часы.
Библиотека node-cron подходит для проектов любого размера — от простых скриптов до микросервисной архитектуры. Она не требует внешних зависимостей и работает стабильно даже при длительном uptime.