April 23, 2026 • Version: 2026.4.14

TypeError: Eigenschaften von undefined können nicht gelesen werden in formatDocsLink während der Daemon-Installation - TypeError: Cannot Read Properties of Undefined in formatDocsLink During Daemon Installation

Der Onboarding-Befehl 'install-daemon' stürzt mit einem TypeError ab, während er durch Kanal-Einträge iteriert, da formatDocsLink keine undefinierten Pfadparameter verarbeitet.

🔍 Symptome

Der Prozess wird während des openclaw onboard --install-daemon-Workflows abrupt beendet, wenn der Benutzer den Kanal einstellt. Die Anwendung kann nicht zu den nachfolgenden Konfigurationsschritten fortfahren.

Fehlerausgabe:

TypeError: Cannot read properties of undefined (reading 'trim')
    at formatDocsLink (links-BlUEqVE8.js:7)
    at resolveChannelSelectionNoteLines (registry-DE4nHTjg.js:111)
    at setupChannels (onboard-channels-D--y_LfI.js:855)

Reproduktionsschritte:

  1. Führen Sie openclaw onboard --install-daemon aus
  2. Konfigurieren Sie das Modell (z.B. minimax)
  3. Gehen Sie zur Einstellung des Kanals über
  4. Beobachten Sie den Absturz mit TypeError

Betroffene Umgebung:

  • OS: Windows 11
  • OpenClaw-Version: 2026.4.14
  • Installationsmethode: npm globale Installation
  • Onboard-Befehl: openclaw onboard --install-daemon

🧠 Ursache

Der Absturz stammt aus einem Defizit in der defensiven Programmierung in der formatDocsLink-Funktion in links-BlUEqVE8.js. Die Funktion nimmt an, dass der path-Parameter immer definiert ist, aber ein Kanalentry existiert mit einem undefined-Wert für meta.docsPath.

Aufrufkettenanalyse:

  1. Einstiegspunkt: onboard-channels-D--y_LfI.js:855 — Die setupChannels-Funktion ruft resolveChannelSelectionNoteLines auf, die durch alle registrierten Kanalentries iteriert.
  2. Aggregation: registry-DE4nHTjg.js:111resolveChannelSetupEntries führt Kanalentries aus drei Quellen zusammen:
    • Integrierte Kanäle
    • Installierte Plugins (z.B. WeCom-Plugin)
    • Verzeichnisbasierte Kanalentries
  3. Formatierung: resolveChannelSelectionNoteLines ruft formatChannelSelectionLine(entry.meta, formatDocsLink) für jeden Entry auf.
  4. Absturzstelle: links-BlUEqVE8.js:7formatDocsLink führt path.trim() aus, wobei path undefined ist.

Schwachstelle:

javascript // links-BlUEqVE8.js - VORHER (verwundbar) function formatDocsLink(path, label, opts) { const trimmed = path.trim(); // 💥 ABSTURZ wenn path undefined ist // … }

Die Funktion schützt nicht gegen null- oder undefined-Werte für den path-Parameter. Kanalentries, die aus verzeichnisbasierter Registrierung oder unvollständigen Plugin-Manifesten stammen, fehlt möglicherweise die docsPath-Eigenschaft in ihrem Metadatenobjekt.

🛠️ Schritt-für-Schritt-Lösung

Option 1: Patch der Verteilungsdatei (Sofortige Problemumgehung)

Suchen und bearbeiten Sie die Verteilungsdatei. Der Pfad variiert je nach Installationsmethode:

Windows (npm global):

%AppData%\npm\node_modules\openclaw\dist\links-BlUEqVE8.js

macOS/Linux (npm global):

$(npm root -g)/openclaw/dist/links-BlUEqVE8.js

Patch angewendet in Zeile 7:

// links-BlUEqVE8.js - NACHHER (gepatcht)
function formatDocsLink(path, label, opts) {
+   if (path == null) return label ?? "";
    const trimmed = path.trim();
    const docsRoot = resolveDocsRoot();
    const url = trimmed.startsWith("http") ? trimmed : `${docsRoot}${trimmed.startsWith("/") ? trimmed : `/${trimmed}`}`;
    // ...
}

Option 2: Quellkanal identifizieren und patchen

Wenn das fehlende docsPath von einem bestimmten Kanal-Plugin stammt:

  1. Identifizieren Sie Kanäle mit unvollständigen Metadaten, indem Sie `~/.openclaw/plugins/` oder projektbezogene Plugin-Verzeichnisse untersuchen.
  2. Stellen Sie sicher, dass jeder Kanalentry `meta.docsPath` in seinem Manifest definiert.
  3. Registrieren Sie den betroffenen Kanal erneut.

Option 3: Auf offiziellen Patch warten

Überwachen Sie das OpenClaw GitHub-Repository auf Version 2026.4.15 oder höher, die diese defensive Prüfung im Upstream-Codebase enthalten sollte.

🧪 Verifizierung

Schritt 1: Überprüfen, dass der Patch vorhanden ist

Stellen Sie sicher, dass der Null-Schutz in formatDocsLink vorhanden ist:

# Windows PowerShell
Select-String -Path "$env:AppData\npm\node_modules\openclaw\dist\links-BlUEqVE8.js" -Pattern "if \(path == null\)"

# Erwartete Ausgabe: Zeile mit "if (path == null) return label ?? "";"

Schritt 2: Onboard-Befehl erneut ausführen

Führen Sie den vollständigen Onboard-Workflow aus:

openclaw onboard --install-daemon

# Erwartet: Workflow wird ohne TypeError abgeschlossen
# Fortfahren durch: Modelleinrichtung → Kanalauswahl → Abschluss

Schritt 3: Daemon-Installation verifizieren

Bestätigen Sie, dass der Daemon läuft:

# Windows
openclaw daemon status
# Erwartet: "Daemon is running" oder ähnlich

# Über Dienst prüfen
Get-Service -Name OpenClaw* 2>$null
# Erwartet: Running-Status

Schritt 4: Kanal-Konfiguration verifizieren

openclaw config get channels
# Erwartet: Liste der konfigurierten Kanäle ohne Fehler

⚠️ Häufige Fehler

  • Falsche Datei patchen: Stellen Sie sicher, dass Sie die richtige `links-BlUEqVE8.js` im aktiven `node_modules`-Verzeichnis bearbeiten, nicht eine zwischengespeicherte oder Sicherungskopie.
  • Globale vs. lokale Installation: Wenn OpenClaw sowohl global als auch lokal in einem Projekt installiert ist, kann die lokale Installation Vorrang haben. Überprüfen Sie mit npm list openclaw, welche Installation aktiv ist.
  • Plugin-Verzeichnisberechtigungen: Unter Windows stellen Sie sicher, dass das Plugin-Verzeichnis beschreibbar ist; andernfalls kann die Kanalregistrierung lautlos fehlschlagen und Entries ohne `docsPath` hinterlassen.
  • Cache-Invalidierung: Löschen Sie nach dem Patchen alle zwischengespeicherten Build-Artefakte:
    npm cache clean --force
    rm -rf node_modules/.cache 2>/dev/null
  • Nachfolgende Updates überschreiben Patches: Das Ausführen von npm update -g openclaw überschreibt den manuellen Patch. Pinnen Sie die Version oder wenden Sie den Patch nach Updates erneut an.
  • Windows Defender-Interferenz: Echtzeitschutz kann Bearbeitungen an Dateien in `AppData` vorübergehend blockieren. Deaktivieren Sie vorübergehend oder fügen Sie eine Ausnahme hinzu, wenn Schreibvorgänge fehlschlagen.
  • Yarn vs. npm-Installationen: Yarn speichert Pakete möglicherweise anders. Verwenden Sie yarn global dir, um den korrekten Installationspfad zu finden, wenn Yarn für die Installation verwendet wurde.

🔗 Zugehörige Fehler

  • TypeError: Cannot read properties of undefined (reading 'startsWith') — Ähnliches Problem mit defensiver Programmierung in `formatDocsLink`, wenn `path` definiert, aber kein String ist (z.B. leeres Objekt).
  • TypeError: Cannot read properties of null (reading 'trim') — Variante desselben Fehlers, wenn `path` explizit `null` statt `undefined` ist.
  • Channel registration failed: docsPath is required — Nachgelagerter Validierungsfehler, der auftreten würde, wenn vorgelagerter Code Kanalmetadaten ordnungsgemäß validieren würde.
  • openclaw onboard hängt unbegrenzt bei der Kanalauswahl — Verwandtes Symptom, wobei die Kanaliteration auf einen Entry ohne `docsPath` stößt, der Fehler jedoch lautlos abgefangen wird.
  • Plugin manifest incomplete: missing required field 'docsPath' — Validierungsfehler im vorgelagerten Bereich für Plugins, die diesen Fehler verhindern sollten.

Belege & Quellen

Diese Troubleshooting-Anleitung wurde automatisch von der FixClaw Intelligence Pipeline aus Community-Diskussionen synthetisiert.