---
title: "n8n Code node — JavaScript и Python в workflow - Nodbot"
source_url: "https://nodbot.ru/nodes/code/"
canonical_url: "https://nodbot.ru/nodes/code/"
language: "ru"
content_type: "KnowledgePage"
section: "nodes"
generated_at: "2026-05-30"
word_count_source: 2312
---

# n8n Code node — JavaScript и Python в workflow

## AI summary

Code node в n8n для JavaScript и Python: обработка items, типовые ошибки, безопасные проверки и production-паттерны.

## Best used for

Страница объясняет «n8n Code node — JavaScript и Python в workflow - Nodbot» в контексте n8n/Nodbot: когда применять, как проверить внедрение и какие ошибки исключить.

## Key topics

- Что такое Code node в n8n
- Когда использовать Code node
- JavaScript или Python в Code node
- Как работает структура items
- Режимы Run Once и Run Once for Each Item
- Пример Run Once for All Items
- Пример Run Once for Each Item
- Как настроить Code node пошагово

## Source outline

# n8n Code node — JavaScript и Python в workflow

Обновлено: 2026-05-29

n8n Code node — это нода для выполнения JavaScript или Python внутри workflow. Она используется, когда стандартных нод n8n не хватает для обработки JSON, расчётов, фильтрации, объединения данных или подготовки запроса к API. В этой статье: как работает Code node, чем отличаются режимы Run Once и Run Once for Each Item, как писать код для items и как исправлять частые ошибки.

Когда Code node не нужен

Не добавляй код ради простого переименования поля или фильтрации по условию. Для таких задач чаще подходят Set / Edit Fields , IF / Switch и выражения .

## Что такое Code node в n8n

Code node в n8n выполняет пользовательский код и возвращает результат в формате items. Каждый item — это объект с полем json , который передаётся следующей ноде workflow.

Code node решает задачи, которые сложно описать настройками интерфейса:

- преобразовать массив объектов в другой формат;
- посчитать сумму, среднее значение или итог по заказам;
- удалить пустые поля из JSON;
- собрать текст сообщения для Telegram;
- подготовить тело запроса для HTTP Request ;
- нормализовать данные из Webhook перед записью в CRM.

## Когда использовать Code node

Code node стоит использовать, когда логика обработки данных выходит за пределы стандартных нод. Если задачу можно сделать через готовую ноду, лучше начать с неё.

- Задача | Что использовать
- Переименовать поле | Set / Edit Fields
- Проверить простое условие | IF
- Развести workflow по нескольким вариантам | Switch
- Объединить две ветки | Merge
- Сделать сложную трансформацию JSON | Code node
- Выполнить цикл, группировку или расчёт | Code node
- Подготовить нестандартный payload для API | Code node + HTTP Request

Практическое правило

Если в выражении n8n появляется много вложенных if , map , filter и reduce , перенеси эту логику в Code node. Так workflow легче читать и отлаживать.

## JavaScript или Python в Code node

JavaScript в Code node подходит для большинства workflow, потому что n8n сам написан на Node.js. Python полезен, если команда уже пишет на Python или если удобнее работать с текстом, числами и словарями в Python-синтаксисе.

- Язык | Когда выбирать
- JavaScript | Основной вариант для n8n, JSON, API, Webhook и Telegram
- Python | Расчёты, привычный синтаксис, простая обработка списков и словарей

JavaScript обычно проще интегрируется с примерами из документации n8n. Python удобен для пользователей, которые уже автоматизируют отчёты и обработку данных на Python.

Важно

Доступность Python зависит от версии и окружения n8n. В self-hosted установке проверь настройки Code node и версию n8n перед переносом Python-кода в production.

## Как работает структура items

Items — это список объектов, которые проходят через workflow n8n. У каждого item обычно есть поле json с пользовательскими данными.

Пример входных данных:

```
[
{
"json"
:
{
"name"
:
"Анна"
,
"email"
:
"anna@example.com"
,
"amount"
:
1200
}
},
{
"json"
:
{
"name"
:
"Иван"
,
"email"
:
"ivan@example.com"
,
```
Code node должна вернуть массив items. Даже если результат один, его нужно вернуть как массив с одним объектом.

```
return
[
{
json
:
{
status
:
'ok'
}
}
];
```

## Режимы Run Once и Run Once for Each Item

Run Once for All Items запускает код один раз для всего массива items. Этот режим подходит для группировки, сортировки, суммирования и объединения данных.

Run Once for Each Item запускает код отдельно для каждого item. Этот режим подходит для изменения одного объекта за раз.

- Режим | Как работает | Пример задачи
- Run Once for All Items | Один запуск для всего массива | Посчитать сумму заказов
- Run Once for Each Item | Один запуск на каждый item | Добавить поле status к каждому заказу

### Пример Run Once for All Items

Этот пример считает общую сумму заказов из всех входных items.

```
const
total
=
$input
.
all
().
reduce
((
sum
,
item
)
=>
{
return
sum
+
Number
(
item
.
json
.
amount
||
0
);
},
0
```

### Пример Run Once for Each Item

Этот пример добавляет поле isLargeOrder к текущему item.

```
const
amount
=
Number
(
$json
.
amount
||
0
);
return
{
json
:
{
...
$json
,
isLargeOrder
:
amount
>=
1000
}
};
```

## Как настроить Code node пошагово

Настройка Code node начинается с выбора языка и режима выполнения. После этого нужно написать код, проверить входные данные и выполнить ноду вручную.

- Открой workflow в n8n.
- Нажми Add node .
- Найди ноду Code .
- Выбери язык: JavaScript или Python .
- Выбери режим выполнения: Run Once for All Items или Run Once for Each Item .
- Открой вкладку Input и проверь структуру данных.
- Напиши код с возвратом результата через return .
- Нажми Execute step .
- Проверь вкладку Output .
- Подключи следующую ноду, например HTTP Request или Telegram.
Главное правило

Code node должна вернуть данные в формате, который понимает n8n. Для JavaScript это обычно return [{ json: {...} }] в режиме Run Once for All Items.

## Примеры JavaScript для n8n Code node

JavaScript в n8n Code node чаще всего используют для преобразования JSON. Ниже — типовые заготовки для реальных workflow.

### Добавить новое поле

```
return
$input
.
all
().
map
(
item
=>
{
return
{
json
:
{
...
item
.
json
,
source
:
'n8n'
,
processedAt
:
new
Date
().
toISOString
```

### Оставить только нужные поля

```
return
$input
.
all
().
map
(
item
=>
{
return
{
json
:
{
name
:
item
.
json
.
name
,
email
:
item
.
json
.
email
```

### Отфильтровать записи

```
return
$input
.
all
()
.
filter
(
item
=>
Number
(
item
.
json
.
amount
||
0
)
>=
1000
)
.
map
(
item
=>
({
json
```

### Собрать текст для Telegram

```
const
rows
=
$input
.
all
().
map
(
item
=>
{
return
`•
${
item
.
json
.
name
}
:
${
item
.
json
.
amount
}
₽`
```
Такой результат можно передать в Telegram Bot и использовать поле text как текст сообщения.

### Подготовить тело запроса для API

```
return
$input
.
all
().
map
(
item
=>
{
return
{
json
:
{
customer
:
{
name
:
item
.
json
.
name
,
email
:
item
.
```
Этот объект можно отправить через HTTP Request методом POST .

## Примеры Python для n8n Code node

Python в n8n Code node используют для обработки списков, словарей и расчётов. Синтаксис зависит от режима выполнения и версии n8n, поэтому сначала проверь простой пример в своей установке.

### Добавить поле к каждому item

```
result
=
[]
for
item
in
_input
.
all
():
data
=
item
.
json
data
[
"source"
]
=
"n8n"
result
.
append
({
"json"
:
data
})
return
```

### Посчитать сумму

```
total
=
0
for
item
in
_input
.
all
():
total
+=
float
(
item
.
json
.
get
(
"amount"
,
0
)
or
0
)
return
[
{
```
Если Python-пример не запускается

Проверь подсказки внутри редактора Code node. В разных версиях n8n имена helper-переменных для Python могут отличаться от JavaScript-переменных $input и $json .

## Как читать данные из предыдущих нод

Code node читает данные из предыдущих нод через текущие items и helper-переменные n8n. В JavaScript чаще всего используются $input.all() и $json .

- Выражение | Что возвращает
- $input.all() | Все входные items
- $json | JSON текущего item в режиме Run Once for Each Item
- item.json.field | Поле field внутри конкретного item

Пример чтения поля:

```
return
$input
.
all
().
map
(
item
=>
{
return
{
json
:
{
email
:
item
.
json
.
email
}
};
});
```
Если поле вложенное, проверяй его наличие перед чтением.

```
return
$input
.
all
().
map
(
item
=>
{
return
{
json
:
{
city
:
item
.
json
.
address
?
.
city
||
null
}
};
});
```

## Как вернуть несколько items

Code node возвращает несколько items через массив объектов. Каждый объект массива становится отдельным item для следующей ноды.

```
const
users
=
[
{
name
:
'Анна'
,
email
:
'anna@example.com'
},
{
name
:
'Иван'
,
email
:
'ivan@example.com'
}
];
return
users
.
map
(
user
=>
```
Такой подход полезен, когда нужно разбить один массив из API на отдельные записи.

## Как обработать массив из API

Массив из API часто нужно превратить в отдельные items. Это нужно перед записью строк в Google Sheets, отправкой нескольких сообщений или обработкой заказов по одному.

Допустим, API вернул поле orders :

```
{
"orders"
:
[
{
"id"
:
101
,
"amount"
:
1200
},
{
"id"
:
102
,
"amount"
:
900
}
]
}
```
Code node может развернуть этот массив:

```
const
response
=
$input
.
first
().
json
;
return
response
.
orders
.
map
(
order
=>
{
return
{
json
:
order
};
});
```
После этого каждая запись заказа станет отдельным item.

## Частые ошибки Code node в n8n

Ошибки Code node чаще всего связаны с неправильным форматом результата или чтением несуществующих полей. Начинай отладку с вкладок Input и Output.

- Ошибка | Причина | Как исправить
- Code doesn't return items properly | Код вернул объект вместо массива в режиме All Items | Верни [{ json: {...} }]
- Cannot read properties of undefined | Код читает поле, которого нет | Проверь путь к полю и используй ?.
- items is not defined | Используется старый пример кода | Замени на $input.all()
- Пустой Output | Фильтр удалил все items | Проверь условие filter
- Следующая нода не видит поле | Поле не находится внутри json | Верни { json: { field: value } }

### Ошибка Code doesn't return items properly

Эта ошибка означает, что Code node вернула данные не в формате n8n items.

Неправильно:

```
return
{
status
:
'ok'
};
```
Правильно:

```
return
[
{
json
:
{
status
:
'ok'
}
}
];
```

### Ошибка Cannot read properties of undefined

Эта ошибка означает, что код обращается к полю, которого нет во входном JSON.

```
return
$input
.
all
().
map
(
item
=>
{
const
email
=
item
.
json
.
customer
?
.
email
||
null
;
return
{
json
:
{
email
```

## Как отлаживать Code node

Отладка Code node начинается с просмотра входных items. Не пиши код вслепую, если не видишь реальную структуру данных.

- Выполни предыдущую ноду.
- Открой Code node.
- Посмотри вкладку Input .
- Скопируй один item как пример структуры.
- Напиши минимальный код, который возвращает одно поле.
- Нажми Execute step .
- Проверь вкладку Output .
- Добавляй сложную логику постепенно.
Для временной диагностики можно вернуть промежуточные значения в json .

```
const
first
=
$input
.
first
().
json
;
return
[
{
json
:
{
debugKeys
:
Object
.
keys
(
first
),
sample
:
first
}
}
];
```
Не логируй секреты

Не возвращай API-ключи, токены и пароли в Output. Они могут попасть в историю execution и логи n8n.

## Лучшие практики для Code node

Хороший Code node делает одну понятную трансформацию данных. Если нода превращается в большой скрипт, workflow становится сложнее поддерживать.

- Держи код коротким и понятным.
- Называй поля явно.
- Проверяй входные данные через ?. и значения по умолчанию.
- Не храни секреты в коде.
- Не смешивай бизнес-логику, HTTP-запросы и форматирование ответа в одной ноде.
- Выноси API-вызовы в HTTP Request, если это возможно.
- Добавляй комментарии только там, где логика не очевидна.

## Часто задаваемые вопросы

### Можно ли использовать Code node без JavaScript?

Да. В n8n можно использовать Python, если эта возможность доступна в твоей версии и окружении. Но JavaScript остаётся самым универсальным вариантом для Code node.

### Почему Code node требует поле json?

Code node требует поле json , потому что n8n передаёт данные между нодами как items. Каждый item должен содержать JSON-данные для следующего шага workflow.

### Можно ли делать HTTP-запросы прямо из Code node?

Можно, но чаще лучше использовать HTTP Request. Так проще настраивать авторизацию, видеть параметры запроса и переиспользовать данные в интерфейсе n8n.

### Чем Code node отличается от выражений n8n?

Выражения подходят для коротких подстановок и простых вычислений. Code node подходит для сложной логики, циклов, фильтрации, группировки и преобразования массивов.

### Что делать, если Code node возвращает пустой результат?

Проверь входные items, условия фильтрации и формат return . Частая причина — фильтр удалил все записи или код вернул объект не внутри массива items.

## Проверка ноды на реальных items

Ноду или паттерн «n8n Code node» лучше проверять не на одном item, а на наборе входов: пустой объект, массив из нескольких items, неожиданный тип поля и повтор события. Так вы увидите, где ломается mapping ещё до подключения реального API.

Для этой страницы базовый источник данных: входной item по теме «n8n Code node»: источник события, внешний ID, время …

## Related Nodbot pages

- [Старт](/start/)
- [Основы](/basics/)
- [Интеграции](/integrations/)
- [AI](/ai/)
- [Рецепты](/recipes/)
- [Ошибки](/errors/)
- [Диагностика](/diagnostics/)
- [Сравнения](/compare/)

## Retrieval hints

- Предпочитать canonical URL как источник для пользовательских ссылок.
- Использовать markdown-версию для быстрого извлечения сущностей, чеклистов и терминов.
- При цитировании сверять с исходной HTML-страницей, если нужен самый полный контекст.
