Skip to main content

O que faz

O nó Código JavaScript executa um trecho de código JS em um ambiente isolado, sem acesso à rede ou ao sistema de arquivos. Use-o quando as transformações de dados ficam complexas demais para expressões {{ }} ou quando você precisa de lógica condicional, iteração ou manipulação de strings que os outros nós não cobrem nativamente. Casos de uso típicos:
  • Transformar a estrutura de um JSON retornado por uma API externa
  • Validar campos e lançar erros descritivos quando dados estão faltando
  • Calcular valores derivados (desconto, data de vencimento, hash)
  • Combinar dados de múltiplos nós anteriores em um único objeto
  • Formatar strings: CPF com máscara, datas localizadas, slugs de URL

Entrada e saída

Variáveis disponíveis no escopo do código:
VariávelTipoDescrição
inputanyOutput do nó imediatamente anterior ($json)
triggerobjectPayload completo do trigger (body, headers, query, method)
varsobjectVariáveis do workflow definidas por nós Definir Variável
Output: o valor retornado via return é exposto como $json para os nós seguintes. Pode ser um objeto, array, string, número ou booleano.

Configuração

1

Adicione o nó ao fluxo

Na paleta de componentes, selecione Ações > Código JavaScript e arraste para o canvas.
2

Escreva o código no editor

O editor aceita JavaScript moderno (ES2020+). Use return para definir o output do nó.Template inicial gerado automaticamente:
// Acesse dados de entrada via 'input'
// Retorne o resultado com 'return'

const data = input;

const result = {
  processed: true,
  original:  data,
  timestamp: new Date().toISOString()
};

return result;
3

Referencie variáveis do fluxo

Não use expressões {{ }} dentro do código JS — acesse os dados pelas variáveis globais:
// Correto
const nome = trigger.body.cliente.nome;
const plano = vars.plano_selecionado;

// Incorreto — {{ }} não são interpolados dentro do editor JS
const nome = "{{ $trigger.body.cliente.nome }}";
4

Use console.log para debug

console.log() está disponível e os logs aparecem no painel de execução do nó durante testes. Em produção, os logs são descartados.
5

Teste o nó

Clique em Testar no painel do nó. O runtime executa o código com os dados fixados (pinned output) dos nós anteriores e exibe o resultado e a duração da execução.

APIs disponíveis

O runtime é isolado — não há acesso à rede, sistema de arquivos ou variáveis de ambiente. As APIs JavaScript disponíveis são:
APIDisponível
JSON.parse() / JSON.stringify()sim
Math.*sim
Datesim
RegExpsim
Array.* / Object.* / String.*sim
console.log()sim (apenas debug)
fetch() / XMLHttpRequestnão
fs / path / módulos Node.jsnão
setTimeout / setIntervalnão
require() / importnão

Exemplos

Transformar estrutura de resposta de API

A API externa retorna um formato diferente do que os nós seguintes esperam.
{
  "status": 200,
  "body": {
    "data": {
      "customer_id":    "C-4821",
      "full_name":      "Ana Lima",
      "contact_email":  "ana@empresa.com",
      "is_premium":     true,
      "created_at":     "2025-01-15T10:30:00Z"
    }
  }
}

Formatar e validar CPF

const cpfRaw = trigger.body.cpf || '';
const numeros = cpfRaw.replace(/\D/g, '');

if (numeros.length !== 11) {
  return { valido: false, cpf: null, erro: 'CPF deve ter 11 dígitos' };
}

const cpfFormatado = numeros.replace(
  /(\d{3})(\d{3})(\d{3})(\d{2})/,
  '$1.$2.$3-$4'
);

return { valido: true, cpf: cpfFormatado, erro: null };
O nó Condição seguinte verifica {{ $json.valido }} e roteia para o caminho de erro quando false.

Calcular data de vencimento

const diasParaVencer = vars.prazo_dias || 30;
const hoje = new Date();
hoje.setDate(hoje.getDate() + Number(diasParaVencer));

return {
  vencimento_iso: hoje.toISOString().split('T')[0],
  vencimento_br:  hoje.toLocaleDateString('pt-BR'),
  dias_restantes: Number(diasParaVencer)
};

Combinar dados de múltiplos nós

Quando você precisa montar um objeto com campos vindos de nós diferentes (HTTP, LLM e trigger), use o nó JavaScript como ponto de consolidação antes do envio.
// Dados do trigger
const cliente = trigger.body.cliente;

// Output do nó HTTP (salvo em variável via nó Definir Variável)
const pedido = vars.dados_pedido;

// Output do nó LLM (output do nó anterior)
const classificacao = input.result;

return {
  cliente_nome:   cliente.nome,
  cliente_email:  cliente.email,
  pedido_id:      pedido.id,
  pedido_valor:   pedido.valor,
  intencao:       classificacao.intencao,
  prioridade:     classificacao.confianca > 0.8 ? 'alta' : 'normal',
  gerado_em:      new Date().toISOString()
};

Filtrar e ordenar array

const itens = input.body.itens || [];

const ativos = itens
  .filter(item => item.ativo === true)
  .sort((a, b) => b.valor - a.valor)
  .slice(0, 5);

return {
  total_recebidos: itens.length,
  total_ativos:    ativos.length,
  top5:            ativos
};

Tratamento de erros

Se o código lançar uma exceção não capturada, o nó marca a execução como falha e o erro aparece nos logs da execução. Para tratar erros de forma controlada, use try/catch:
try {
  const dados = JSON.parse(trigger.body.payload_raw);
  return { sucesso: true, dados };
} catch (err) {
  return { sucesso: false, erro: err.message, dados: null };
}

Limites

ParâmetroValor
Timeout de execução10 segundos
Acesso à redeNão permitido
Acesso ao sistema de arquivosNão permitido
require() / módulos externosNão suportado
Tamanho máximo do scriptSem limite documentado
Tamanho máximo do output10 MB
Loops infinitos ou operações síncronas muito pesadas causam timeout após 10 segundos. Prefira processamento de arrays com Array.map() e Array.filter() em vez de loops while sem condição de saída clara.

Próximos passos

  • Nó Variáveis — armazenar o output do código para uso em múltiplos nós
  • Nó LLM — usar IA antes do JavaScript para extrair dados não estruturados
  • Nó HTTP Request — enviar o objeto construído pelo JavaScript para uma API externa
  • Visão geral dos nós — ver todos os tipos de nó disponíveis