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

ModoNúmero de execuçõesLeitura dos dadosIdeal para
Run Once for All ItemsExecuta 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 ItemExecuta uma vez para cada item$input.item / $jsonTransformar 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