Skip to content

Глава 8. Обработка ошибок и отладка

Автоматизация без обработки ошибок — это бомба с таймером. Внешние API падают, данные приходят в неожиданном формате, лимиты исчерпываются. В n8n есть несколько уровней защиты.

Просмотр ошибок выполнения

Каждое выполнение воркфлоу фиксируется во вкладке Executions. Цвет иконки показывает статус:

  • 🟢 Success — всё прошло
  • 🔴 Error — выполнение прервалось с исключением
  • 🟡 Waiting — воркфлоу ждёт продолжения (Wait нода)

Нажмите на выполнение — откроется воркфлоу в режиме просмотра с данными каждой ноды на момент выполнения. Нажмите на красную ноду — увидите текст ошибки и входные данные, которые её вызвали.

Retry on Fail — повтор при ошибке

Самый простой механизм: при временных сбоях (сеть упала, API вернул 503) нода автоматически повторяет запрос.

Включение: в настройках ноды → SettingsRetry on Fail: On

Параметры:

ПараметрОписание
Max TriesМаксимальное число попыток (1-5). По умолчанию: 3
Wait Between TriesПауза между попытками в миллисекундах (по умолчанию: 1000)

Когда применять

Retry on Fail хорошо работает для нестабильных HTTP-запросов. Не поможет при логических ошибках (неверный формат данных) — нода будет падать снова и снова.

Continue on Fail — продолжить несмотря на ошибку

Включение: SettingsContinue on Fail: On

При ошибке нода не прерывает воркфлоу, а передаёт айтем дальше с дополнительным полем:

json
{
  "error": {
    "message": "Request failed with status code 404",
    "statusCode": 404,
    "description": "Not Found"
  }
}

Дальше можно проверить через IF:

{{ $json.error !== undefined }} is true → обработка ошибки

Stop and Error — намеренная остановка

Нода Stop and Error явно прерывает воркфлоу с заданным сообщением. Используйте, когда входные данные не соответствуют ожидаемому формату.

// Пример: проверка обязательного поля

Обычный паттерн — поставить после IF с проверкой данных:

HTTP Request → IF: {{ $json.userId }} is empty
    true  → Stop and Error ("userId отсутствует в ответе API")
    false → продолжение обработки

В Error Workflow (см. ниже) получите сообщение через {{ $json.execution.error.message }}.

Error Workflow — глобальный обработчик ошибок

Специальный воркфлоу, который запускается, когда в другом воркфлоу произошла необработанная ошибка. Аналог try/catch на уровне воркфлоу.

Настройка

  1. Создайте новый воркфлоу, добавьте Error Trigger как первую ноду.
  2. Постройте нужную логику (отправка в Slack, Telegram, email).
  3. Скопируйте название этого воркфлоу.
  4. В воркфлоу, который хотите защитить: SettingsError Workflow → выберите созданный.

Данные в Error Trigger

json
{
  "execution": {
    "id": "12345",
    "url": "https://your-n8n.com/execution/12345",
    "retryOf": null,
    "error": {
      "message": "Request failed with status code 500",
      "stack": "Error: Request failed...",
      "cause": {
        "statusCode": 500,
        "responseBody": "Internal Server Error"
      }
    },
    "lastNodeExecuted": "HTTP Request",
    "mode": "trigger",
    "startedAt": "2024-01-15T10:30:00.000Z",
    "stoppedAt": "2024-01-15T10:30:05.000Z"
  },
  "workflow": {
    "id": "abc123",
    "name": "Daily Sales Report"
  }
}

Пример Error Workflow с уведомлением в Telegram

Error Trigger
  → Telegram (
      Chat ID: -1001234567890
      Message: |
        🚨 Ошибка в воркфлоу!
        
        Воркфлоу: {{ $json.workflow.name }}
        Нода: {{ $json.execution.lastNodeExecuted }}
        Ошибка: {{ $json.execution.error.message }}
        
        🔗 {{ $json.execution.url }}
    )

Отладка с помощью нод

Noda "Set" для промежуточной проверки

Вставьте ноду Set между нодами, чтобы проверить данные в конкретной точке:

HTTP Request → Set (просто пропускаем данные, ничего не меняем) → Code

Нажмите Execute Node на Set — увидите, что из неё выходит.

Noda "Code" для логирования

javascript
// Временное логирование для отладки
console.log('Items count:', items.length);
console.log('First item:', JSON.stringify(items[0].json, null, 2));
return items;

Вывод console.log появляется в System Logs (если включены) или в ExecutionsLogs в режиме просмотра выполнения.

Инструменты отладки в редакторе

Режим просмотра выполнения

После запуска воркфлоу нажмите на любую ноду — откроется панель с данными:

  • INPUT — что нода получила на вход
  • OUTPUT — что нода отдала (для каждого айтема)
  • INFO — время выполнения, количество айтемов

Pin Data (зафиксировать данные)

Нажмите на ноду → Pin Data. Данные фиксируются и при следующих запусках нода не выполняется — используются сохранённые данные.

Полезно для:

  • Отладки нод после медленного HTTP Request — не нужно каждый раз делать запрос
  • Тестирования с конкретными данными
  • Изоляции части воркфлоу

Иконка скрепки на ноде показывает, что данные зафиксированы.

Test with Previous Data

Кнопка Test with Previous Data в панели выполнения позволяет повторно запустить воркфлоу с теми же входными данными, что и в прошлый раз. Экономит время при итеративной отладке.

Паттерны устойчивости

Идемпотентность

Проектируйте воркфлоу так, чтобы повторный запуск с теми же данными не создавал дубликатов. Для HTTP Request:

javascript
// Перед вставкой — проверьте существование
// GET /api/items?externalId={{ $json.id }}
// IF: items.length > 0 → пропустить
// ELSE → POST /api/items

Dead Letter Queue

Ошибочные айтемы сохраняйте для повторной обработки:

HTTP Request [Continue on Fail = On]
  → IF: {{ $json.error !== undefined }}
      true  → Google Sheets (записать в лист "errors": id, timestamp, error)
      false → обычная обработка

Ночью отдельный воркфлоу читает лист "errors" и пытается повторить обработку.

Неофициальная документация. n8n — продукт n8n GmbH.