Skip to main content

n8n Code node: JavaScript och Python för logik som saknar en nod

3 min read Updated:

n8n har hundratals noder för API:er, databaser och tjänster. Men ibland behöver du logik som ingen nod hanterar: ett ovanligt regex, en beräkning, en sluggenerator. Det är när Code-noden börjar.

Vad Code-noden gör

Code-noden kör antingen JavaScript eller Python direkt i ditt workflow. Ingen extern tjänst. Ingen webhook. Bara kod som körs när noden exekveras.

Du växlar språk i noden via dropdown-menyn uppe till höger. JavaScript är default och fungerar i alla n8n-miljöer. Python kräver att n8n hittar en Python-binär — självhostad installation med Python installerat, eller n8n Cloud på en plan som stödjer det. Kontrollera med python3 --version på din server om du är osäker.

Inputformat

Båda språken exponerar samma API för att komma åt items:

// JavaScript
const items = $input.all();       // alla items som array
const first = $input.first();     // första itemet
# Python
items = _input.all()
first = _input.first()

Varje item har en .json-egenskap med din faktiska data. Andra metadata lever under .binary och .pairedItem.

Outputformat

Det enda som spelar roll: Code-noden förväntar sig att du returnerar en array av objekt med en json-nyckel.

return [
  { json: { slug: "mitt-värde", timestamp: new Date().toISOString() } },
  { json: { slug: "annat-värde", timestamp: new Date().toISOString() } }
];

Glömmer du json-omslaget ser du ett kryptiskt felmeddelande om att outputen inte är valid. Det är nästan alltid det.

Run Once for All Items

Som default kör Code-noden en gång per input-item. Slår du på “Run Once for All Items” i nodens inställningar får du hela arrayen i ett enda anrop och returnerar en ny array som ersätter alla items.

Använd det när du behöver aggregera: summera värden, hitta max, slå ihop rader. Annars är default-läget enklare att resonera kring — noden ser ett item och returnerar ett item (eller noll om du filtrerar bort det).

Tre vanliga use cases

Slug-generering. Set-noden kan inte köra replace(/[^a-z0-9-]/g, ''). Code-noden kan.

return $input.all().map(item => ({
  json: {
    ...item.json,
    slug: item.json.title
      .toLowerCase()
      .replace(/\s+/g, '-')
      .replace(/[^a-z0-9-]/g, '')
  }
}));

Datumbearbetning med precision. $now är fryst till exekveringsstart. new Date() i Code-noden ger faktisk väggklocktid.

Konditionell transformation. Om fältet X är tomt, fyll med Y; annars normalisera Z. Set-noden hanterar enkel logik med expressions. Code-noden hanterar nestade villkor utan att expressions-syntaxen exploderar.

När du inte ska använda Code-noden

Varje Code-nod är ett black box för den som tar över ditt workflow. Den syns inte i n8n:s visuella diff, den är svårare att testa isolerat och den lämnar inget spår i nodehistoriken.

Fråga dig: kan en Set-, Filter-, Merge- eller Split-nod lösa det här? Då är den noden bättre. Code-noden är rätt verktyg när ingenting annat räcker — inte ett första alternativ för enkel logik.

En tumregel: om du skriver mer än 20 rader kod i en Code-nod, undersök om logiken borde vara en extern funktion som du anropar via HTTP Request i stället.

Vanliga frågor

Vilket språk ska jag välja — JavaScript eller Python?

JavaScript om du är osäker. Det fungerar i alla n8n-miljöer utan extra konfiguration. Python om du är mer bekväm med Python och vet att din n8n-installation stödjer det.

Kan Code-noden göra HTTP-anrop?

Tekniskt sett ja — fetch fungerar i JavaScript-läget. Men det är bättre att använda en dedikerad HTTP Request-nod som hanterar autentisering, timeout och felloggning på ett sätt som syns i workflow-grafen.

Hur felsöker jag Code-noden?

Använd console.log() i JavaScript eller print() i Python. Outputen syns i n8n:s exekveringslogg under “Logs” i sidopanelen. Kör sedan noden isolerat med “Execute Step” för att testa utan att köra hela workflödet.

Tools Used in This Article

This article mentions several tools from my tech stack.

Get insights and updates first

Subscribe to get updates on agentic engineering, data pipelines, MCP infrastructure, and new projects straight to your inbox.