Skip to Content

Debugging

Effektives Debugging ist entscheidend für die produktive Entwicklung mit LowCode. Dieser Abschnitt beschreibt die verfügbaren Werkzeuge und Techniken — von der Debug-Node über Server-Logs bis hin zu Remote Debugging mit VS Code.

Debug-Node

Die Debug-Node ist das wichtigste Debugging-Werkzeug in Node-RED. Sie zeigt Message-Inhalte in der Debug-Seitenleiste des Editors an.

Ausgabemodi

ModusBeschreibungAnwendung
msg.payloadNur das Payload-FeldStandard für schnelle Prüfungen
Vollständige MessageDas gesamte msg-ObjektAnalyse aller Message-Properties
JSONata-AusdruckWertet einen JSONata-Ausdruck ausGezielte Datenextraktion

JSONata-Beispiele:

$count(payload.items) → Anzahl der Elemente payload.user.name → Verschachteltes Feld extrahieren $sum(payload.orders.total) → Summe berechnen

Debug-Seitenleiste

Die Debug-Seitenleiste (rechtes Panel, Käfer-Symbol) bietet:

  • Filter: Nach Node-Name oder Inhalt filtern
  • Pfad kopieren: Klick auf ein Feld kopiert den Zugriffspfad (z.B. msg.payload.user.id)
  • An Sidebar anheften: Message bleibt sichtbar bei neuen Messages

Tipp: Deaktivieren Sie nicht benötigte Debug-Nodes über den Button an der Node — deaktivierte Nodes beeinflussen die Performance nicht.

Node-RED Logs

Log-Level

LevelBeschreibungVerwendung
traceSehr detaillierte AusgabenTiefgehende Fehleranalyse
debugDebug-InformationenEntwicklung und Test
infoAllgemeine InformationenStandard für Produktion
warnWarnungenPotenzielle Probleme
errorFehlerFehler, die Aktionen erfordern
fatalSchwerwiegende FehlerSystemkritische Probleme

Log-Level konfigurieren

Via settings.js:

module.exports = { logging: { console: { level: "debug", metrics: false, audit: false } } }

Via Umgebungsvariable:

environment: - NODERED_LOG_LEVEL=debug

Logs mit Docker Compose anzeigen

docker compose logs -f lowcode # Live-Logs verfolgen docker compose logs --tail=100 lowcode # Letzte 100 Zeilen

In Function Nodes loggen

node.trace("Detaillierte Debug-Information"); node.debug("Debug-Ausgabe: " + JSON.stringify(msg.payload)); node.log("Verarbeitung abgeschlossen"); node.warn("API-Antwortzeit hoch: " + msg.responseTime + "ms"); node.error("Datenbankfehler", msg); // Sendet msg an Catch-Node

Wichtig: node.error("...", msg) sendet die Message an eine Catch-Node. Ohne msg-Parameter wird nur geloggt.

Browser DevTools

Network-Tab für HTTP-Debugging

Verwenden Sie die Browser DevTools (F12), um HTTP-Anfragen zu analysieren:

  1. Network-Tab öffnen, Filter auf XHR/Fetch setzen
  2. Flow deployen oder Dashboard-Aktion auslösen
  3. Request/Response analysieren: Headers, Body, Timing

Console für Dashboard-2 Debugging

Dashboard-2 basiert auf Vue.js. Fehler erscheinen in der Browser-Console:

[Vue warn]: Property "items" was accessed during render but is not defined [Dashboard] Widget "ui-table" received invalid data format

Im Application-Tab können Sie Local Storage, Service Workers (PWA) und Cache Storage einsehen.

Trace Execution Extension

Die Trace Execution Extension ist eine Runtime Extension im Enterprise Image, die alle Node-Ausführungen protokolliert.

Aktivierung

environment: - PROCESSCUBE_TRACE_ENABLED=true

Aufgezeichnete Daten

Für jede Node-Ausführung: Zeitstempel, Node-ID/Name, Flow-ID, Dauer und Message-ID.

CSV-Ausgabe:

timestamp,flowId,nodeId,nodeName,nodeType,duration_ms,msgId 2024-01-15T10:30:01.123Z,flow1,node1,validate input,function,2,msg_abc 2024-01-15T10:30:01.125Z,flow1,node2,query database,http request,150,msg_abc

Datenbank-Ausgabe: Trace-Daten werden in der Datenbank gespeichert und können mit Grafana visualisiert werden.

Weitere Details unter Runtime Extensions.

Häufige Debugging-Szenarien

Message-Flow nachverfolgen

Problem: Eine Message kommt nicht am Ziel an.

Lösung: Debug-Nodes an jedem Verzweigungspunkt platzieren, _msgid verfolgen, Switch-/Change-Node-Bedingungen und Link-Node-Verbindungen prüfen.

Hängende Flows finden

Problem: Ein Flow reagiert nicht mehr.

Lösung:

  1. Status-Nodes einsetzen, um den Node-Status zu überwachen
  2. Catch-Node prüfen: Werden Fehler still verschluckt?
  3. HTTP-Request-Nodes: Timeout konfiguriert? Antwortet der Dienst?
  4. Join-Node: Wartet er noch auf fehlende Messages?

Authentifizierungsprobleme diagnostizieren

Problem: Requests werden mit 401/403 abgelehnt.

Lösung:

# Authority-Endpunkt testen curl http://localhost:11560/.well-known/openid-configuration # Authority-Logs prüfen docker compose logs authority

Prüfen Sie: Authorization-Header vorhanden? Token abgelaufen? OIDC-Konfiguration korrekt?

VS Code Remote Debugging

Node-RED mit Inspector starten

services: lowcode: image: marketplace.processcube.io/processcube-io/processcube_lowcode:latest ports: - "1880:1880" - "9229:9229" environment: - NODE_OPTIONS=--inspect=0.0.0.0:9229

VS Code Launch-Konfiguration

{ "version": "0.2.0", "configurations": [{ "type": "node", "request": "attach", "name": "Attach to Node-RED", "address": "localhost", "port": 9229, "localRoot": "${workspaceFolder}/apps/lowcode/src", "remoteRoot": "/data/node_modules/your-package", "skipFiles": ["<node_internals>/**"] }] }

Mit F5 verbinden, Breakpoints in Custom-Node JS-Dateien setzen, Flow auslösen — VS Code stoppt am Breakpoint und zeigt Variablen, Call-Stack und Scope.

Tipp: Das ProcessCube® AppTemplate enthält eine vorkonfigurierte .vscode/launch.json — Details unter AppTemplate Debugging.

Weiterführende Informationen