Conteúdo
Tutorial do nó Code do n8n: processe dados com JavaScript e Python
Quando expressões e nós prontos não atendem ao que você precisa, o nó Code permite escrever JavaScript (ou Python) diretamente.
Dois modos de execução
| Modo | Número de execuções | Leitura dos dados | Ideal para |
|---|---|---|---|
| Run Once for All Items | Executa uma vez para o nó inteiro | $input.all() | Estatísticas, classificação, combinação e criação de vários items |
| Run Once for Each Item | Executa uma vez para cada item | $input.item / $json | Transformar dados item por item |
Formato de retorno
O nó Code precisa retornar um array de items, em que cada elemento é { json: {...} }:
return [
{ json: { name: "João", score: 90 } },
{ json: { name: "Maria", score: 85 } },
];
No modo Run Once for Each Item, basta retornar um objeto:
return { json: { ...$json, total: $json.price * $json.qty } };
(As versões mais recentes do n8n também aceitam o retorno direto de um objeto comum e o envolvem automaticamente em { json: ... }, mas escrevê-lo explicitamente ajuda a evitar erros.)
Exemplo: calcular e adicionar campos (execução por item)
const price = Number($json.price);
const qty = Number($json.qty);
return {
json: {
...$json,
subtotal: price * qty,
shipping: price * qty >= 1000 ? 0 : 60,
},
};
Exemplo: gerar estatísticas (uma execução para todos)
const items = $input.all();
const byRegion = {};
for (const item of items) {
const { region, amount } = item.json;
byRegion[region] = (byRegion[region] ?? 0) + Number(amount);
}
return Object.entries(byRegion)
.sort((a, b) => b[1] - a[1])
.map(([region, total]) => ({ json: { region, total } }));
Com 100 pedidos de entrada, você obtém um item com o total para cada região.
Exemplo: gerar vários items
// Generate dates for the next 7 days
const days = [];
for (let i = 0; i < 7; i++) {
days.push({ json: { date: $now.plus({ days: i }).toFormat("yyyy-MM-dd") } });
}
return days;
Exemplo: organizar dados complexos retornados por uma API
const data = $input.first().json;
return data.results
.filter((r) => r.status === "active")
.map((r) => ({
json: {
id: r.id,
name: r.profile?.display_name ?? r.username,
email: r.contact?.email ?? null,
tags: (r.tags ?? []).map((t) => t.label).join(", "),
},
}));
Ler dados de outros nós
Assim como nas expressões:
const settings = $("Obter configurações").first().json;
const orders = $("Pedidos").all();
Depuração
console.log($json);
A saída aparece no Console das ferramentas de desenvolvedor do navegador (durante testes manuais).
Usar pacotes npm externos
Na versão autogerenciada, você pode permitir que o nó Code use módulos integrados e pacotes externos por meio de variáveis de ambiente:
NODE_FUNCTION_ALLOW_BUILTIN=crypto
NODE_FUNCTION_ALLOW_EXTERNAL=lodash,dayjs
Os pacotes externos precisam estar instalados no ambiente que executa o nó Code (ao usar Docker, normalmente é necessário criar uma imagem personalizada). No n8n 2.x, o nó Code é executado em um task runner. Consulte a documentação oficial sobre task runners para ver as configurações relacionadas.
Mudanças importantes no n8n 2.x
- Por padrão, o nó Code não pode ler variáveis de ambiente (
$env), para evitar o vazamento de segredos. $evaluateExpression()não é mais compatível com o nó Code.- Python: o método antigo, que executava Python com Pyodide (Python no navegador), foi removido. O nó Code com Python no n8n 2.x exige um task runner executado em “modo externo” (a imagem
n8nio/runnersé fornecida oficialmente), e a sintaxe é diferente da versão antiga.
Exemplo de Python (requer um task runner Python configurado)
# Run Once for All Items
results = []
for item in _items:
data = item["json"]
results.append({"json": {"name": data["name"].strip(), "length": len(data["name"])}})
return results
O novo método de execução em Python usa _items (todos os items) ou _item (modo por item) e acessa campos com colchetes de dicionário. _input e a sintaxe com ponto não são compatíveis. Se o seu ambiente não tiver um task runner Python configurado, use JavaScript.
Quando não usar o nó Code
- Para obter um valor ou formatá-lo de forma simples → use expressões
- Para dividir, combinar, filtrar ou classificar → use Split Out, Aggregate, Filter ou Sort
- Para chamar uma API → use HTTP Request
Quanto menos nós Code houver, mais fácil será para outras pessoas entenderem e manterem o fluxo de trabalho.
Atualizado 12 de outubro de 2026