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
| Modus | Beschreibung | Anwendung |
|---|---|---|
| msg.payload | Nur das Payload-Feld | Standard für schnelle Prüfungen |
| Vollständige Message | Das gesamte msg-Objekt | Analyse aller Message-Properties |
| JSONata-Ausdruck | Wertet einen JSONata-Ausdruck aus | Gezielte Datenextraktion |
JSONata-Beispiele:
$count(payload.items) → Anzahl der Elemente
payload.user.name → Verschachteltes Feld extrahieren
$sum(payload.orders.total) → Summe berechnenDebug-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
| Level | Beschreibung | Verwendung |
|---|---|---|
trace | Sehr detaillierte Ausgaben | Tiefgehende Fehleranalyse |
debug | Debug-Informationen | Entwicklung und Test |
info | Allgemeine Informationen | Standard für Produktion |
warn | Warnungen | Potenzielle Probleme |
error | Fehler | Fehler, die Aktionen erfordern |
fatal | Schwerwiegende Fehler | Systemkritische Probleme |
Log-Level konfigurieren
Via settings.js:
module.exports = {
logging: {
console: { level: "debug", metrics: false, audit: false }
}
}Via Umgebungsvariable:
environment:
- NODERED_LOG_LEVEL=debugLogs mit Docker Compose anzeigen
docker compose logs -f lowcode # Live-Logs verfolgen
docker compose logs --tail=100 lowcode # Letzte 100 ZeilenIn 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-NodeWichtig: 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:
- Network-Tab öffnen, Filter auf
XHR/Fetchsetzen - Flow deployen oder Dashboard-Aktion auslösen
- 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 formatIm 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=trueAufgezeichnete 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_abcDatenbank-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:
- Status-Nodes einsetzen, um den Node-Status zu überwachen
- Catch-Node prüfen: Werden Fehler still verschluckt?
- HTTP-Request-Nodes: Timeout konfiguriert? Antwortet der Dienst?
- 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 authorityPrü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:9229VS 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
- Best Practices — Fehlerbehandlung und Logging
- Häufige Probleme — Lösungen für bekannte Probleme
- Runtime Extensions — Trace Execution und Health Checks