Skip to main content

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

tutorialSvenska3 min readUpdated:

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.