Timeout no nó de código (Javascript)

Meu nó de código continua expirando. Mas costumava funcionar perfeitamente. Não acho que seja um código muito complexo.

Aqui está o código:

const rawDate = $input.item.json.Date;
const rawTime = $input.item.json.Current_Time;

const parts = rawDate.split(‘-’);
const day = parts[0].padStart(2, ‘0’);
const monthMap = { Jan:‘01’, Feb:‘02’, Mar:‘03’, Apr:‘04’, May:‘05’, Jun:‘06’, Jul:‘07’, Aug:‘08’, Sep:‘09’, Oct:‘10’, Nov:‘11’, Dec:‘12’ };
const mm = monthMap[parts[1]];
const yyyy = 20${parts[2]};

const timeWithMs = rawTime.split(‘T’)[1];
const timePart = timeWithMs.split(‘.’)[0];
const offsetPart = timeWithMs.includes(‘+’) ? +${timeWithMs.split('+')[1]} : -${timeWithMs.split('-')[1]};

return {
…$input.item.json,
Formatted_Date: ${yyyy}-${mm}-${day}T${timePart}${offsetPart}
};

1 curtida

const { Date: d, Current_Time: t } = $input.item.json;

const [day, mon, yr] = d.split(‘-’);
const month = {
Jan:‘01’, Feb:‘02’, Mar:‘03’, Apr:‘04’,
May:‘05’, Jun:‘06’, Jul:‘07’, Aug:‘08’,
Sep:‘09’, Oct:‘10’, Nov:‘11’, Dec:‘12’
}[mon];

const time = t.split(‘T’)[1];
const [hms, offset] = time.split(‘.’);

return [
{
json: {
…$input.item.json,
Formatted_Date: 20${yr}-${month}-${day.padStart(2,'0')}T${hms}.${offset || ''}
}
}
];

Bem-vindo @Elan_Savan!

Esse código é muito simples para atingir o limite de 60 segundos por conta própria - análise de string de data como esta é executada em menos de 1ms. A causa mais provável é a contagem de itens fluindo para o nó: Nós de Código são executados uma vez por item por padrão, então se seus dados upstream cresceram (digamos 200+ linhas de uma planilha), o tempo de execução total se acumula e pode disparar o timeout. Clique no nó no editor e verifique quantos itens estão em sua entrada.

Se a contagem de itens parecer normal, também pode ser um problema temporário de capacidade do executor de tarefas da Cloud - tente desativar e ativar o workflow novamente e depois execute novamente no modo de teste para ver se se reproduz consistentemente.

1 curtida

Obrigado pela contribuição, @nguyenthieutoan.

Você está certo que o próprio código é leve e normalmente não deveria atingir o limite de execução de 60 segundos. A primeira coisa que eu verificaria é o número de itens entrando no nó de Código, já que o n8n executa o código para cada item recebido por padrão. Se a fonte upstream estiver retornando centenas de registros, o tempo de execução cumulativo pode se tornar significativo.

Também recomendaria verificar:

• Se o workflow está sendo executado em modo “Executar Uma Vez para Cada Item” ou “Executar Uma Vez para Todos os Itens”.
• Os logs de execução para identificar qual nó está realmente consumindo a maior parte do tempo de execução.
• Qualquer nó upstream como Requisições HTTP, consultas de banco de dados ou operações em planilhas que possam estar introduzindo atrasos antes da execução do nó de Código.
• Uso de memória e histórico de execução do workflow se estiver rodando no n8n Cloud, pois o congestionamento temporário do executor de tarefas pode ocasionalmente afetar os tempos de execução.

Para otimização, a transformação de data também pode ser simplificada usando as funções nativas de manipulação de Date do JavaScript, reduzindo a quantidade de análise de strings necessária.