Begriff
Code Node (Der Alleskönner)
Warum wichtig?
Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.
Wenn die vorgefertigten Bausteine nicht reichen, kommt der Code Node. Hier kannst du direkt programmieren. Du hast die volle Freiheit. Es ist das Werkzeug für die Spezialfälle.
:level0Lernbruecke: Ein Code Node ist sinnvoll, wenn normale Nodes zu umstaendlich werden. Er ist kein Freifahrtschein für Chaos, sondern ein Werkzeug für klare kleine Transformationen.
Lernbruecke für Anfänger
Wenn du bei Code Node (Der Alleskönner) ganz neu startest, denke zuerst nicht an Fachwörter, sondern an die Alltagssituation: Eigene JavaScript-Logik für komplexe Transformationen. Der Begriff beschreibt einen klaren Baustein im größeren Ablauf. Frage dich immer: Was ist der Eingang, was passiert in der Mitte, und woran erkenne ich am Ende, dass es funktioniert hat?
Ein guter Einstieg ist, den Begriff in einem Satz zu erklären, danach ein reales Beispiel zu nennen und erst dann die Technikdetails zu lernen. So entsteht kein reines Auswendiglernen, sondern ein mentales Modell.
Du schreibst JavaScript. Typische Aufgaben:
- Daten komplex umformen (z.B. Vornamen aus einer E-Mail extrahieren).
- Mathematische Berechnungen.
- Kryptographie (Signaturen erstellen).
- APIs aufrufen, die sehr spezielle Anforderungen haben.
Es gibt den Modus "Run Once for All Items" (Effizient) oder "Run Once for Each Item" (Einfacher).
:level1Praxisbeispiel: Aus einer Liste von Produkten sollen nur aktive Produkte mit Preis größer 0 übrig bleiben. Schreibe vorher auf, wie Input und Output aussehen sollen, dann erst den Code.
Praxisroutine
In der Praxis lernst du Code Node (Der Alleskönner), indem du mit einem kleinen, kontrollierten Beispiel beginnst. Baue zuerst einen Minimalfall, prüfe das Ergebnis, veraendere genau eine Sache und beobachte, was sich ändert. Notiere dir Eingabe, Aktion, Ausgabe und typischen Fehler.
Übung: Erstelle ein Beispiel aus deinem Alltag, fuehre den Ablauf gedanklich Schritt für Schritt durch und markiere die Stelle, an der du Feedback oder ein Log brauchst. Wenn du diese Stelle benennen kannst, verstehst du den Begriff praktisch.
Du hast Zugriff auf alle n8n-Variablen:
$input.all(): Alle eingehenden Daten.$json: Das aktuelle JSON-Objekt (im "Iterate" Modus).$node["NodeName"].json: Daten eines anderen Nodes.
Du kannst auch externe Libraries (npm modules) nutzen, wenn dein n8n-Admin sie freigeschaltet hat (Environment Variable NODE_FUNCTION_ALLOW_EXTERNAL).
Vorsicht: Fehler im Code (z.B. undefined Zugriff) lassen den ganzen Workflow abstürzen.
:level2
Technisch arbeitet n8n mit Items. Ein Code Node sollte die Item-Struktur respektieren, Fehler explizit behandeln und keine schwer sichtbare Geschaeftslogik verstecken, die später niemand findet.
Technische Einordnung im System
Technisch ist Code Node (Der Alleskönner) nicht isoliert. Es wirkt mit Nachbarbegriffen zusammen, hat Voraussetzungen und erzeugt Folgen. Für ein robustes Verständnis prüfst du drei Fragen: Welche Daten oder Bedingungen braucht dieser Schritt? Welche Ausgabe oder Wirkung entsteht? Was passiert bei falschen, fehlenden oder zu großen Eingaben?
Diese Sicht ist wichtig, weil echte Systeme selten am Hauptpfad scheitern. Sie scheitern an Randfällen, Berechtigungen, Zeitpunkten, Formaten, Reihenfolgen oder stillen Annahmen.
Runtime & Sandbox
Der Code läuft in einer Node.js Sandbox (vm2 oder ähnlich, je nach Version).
Er hat keinen vollen Zugriff auf das Dateisystem oder das Netzwerk (außer über built-in helpers oder wenn explizit erlaubt).
Built-in Libraries sind verfügbar: crypto, os, url und oft moment oder luxon für Zeiten.
Performance: Map vs. Loop
- Run Once for All Items: Du bekommst ein Array mit 1000 Items. Du iterierst selbst (
items.map(...)). Das ist extrem schnell. - Run Once for Each Item: Der Code wird 1000 Mal ausgeführt. Das ist langsam (Overhead), aber einfacher zu schreiben (
return { json: { newField: $json.oldField + 1 } }). Best Practice: Nutze immer "Run Once for All Items" für große Datenmengen.
Global State ($vars)
Du kannst Variablen definieren, die für den ganzen Workflow gelten ($vars).
Im Code Node kannst du diese zwar lesen, aber nicht dauerhaft schreiben (dafür gibt es den Set Node).
Für persistente Daten über Runs hinweg nutzt man getWorkflowStaticData('global').
Quick-Check
Welche Sprache nutzt der Code Node?
JavaScript (TypeScript ist teilweise auch möglich in neueren Versionen).Was ist effizienter: "Run Once for All" oder "Run Once for Each"?
Run Once for All Items (weniger Overhead).Kann ich beliebige npm-Pakete importieren?
Nein, nur wenn der Admin sie inNODE_FUNCTION_ALLOW_EXTERNALfreigeschaltet hat.