Fehlerbehebungs-Checkliste
Prüfe zuerst, ob Stream Deck das Plugin sieht, dann das Manifest, dann den Prozess, dann die Action-Events.
1. Plugin erscheint nicht
Prüfe:
- Die Stream Deck App läuft.
- Das Plugin-Verzeichnis endet auf
.sdPlugin. - Das Plugin ist gelinkt oder installiert.
manifest.jsonist gültiges JSON.- Die Plugin-UUID ist gültiges Reverse-DNS in Kleinschreibung.
Software.MinimumVersionist nicht höher als die installierte Stream Deck App.OSunterstützt die aktuelle Plattform.- Die Stream Deck App wurde nach der Installation neu gestartet.
Elgato weist darauf hin, dass Stream Deck nach einer Neuinstallation oder einem App-Update mit erhöhten Rechten laufen kann und ein Neustart Probleme mit nicht angezeigten Plugins beheben kann.
2. Watch-Modus lädt nicht neu
Prüfe:
npm run watchläuft noch.- Das generierte Watch-Skript enthält
streamdeck restart <plugin_uuid>. - Die UUID im Watch-Befehl passt zur Manifest-UUID.
- Rollup baut erfolgreich neu.
- Stream Deck wird nicht durch OS-Berechtigungen blockiert.
- Die geänderte Datei liegt unter
src/oder dem beobachteten Manifest-/Plugin-Pfad.
Manueller Ausweichweg:
npm run build
streamdeck restart com.example.plugin
3. Action erscheint, tut aber nichts
Prüfe:
- Die Action-UUID in
@action({ UUID: '...' })passt zur Action-UUID im Manifest. - Die Action-Klasse wird vom Plugin-Einstiegspunkt importiert.
- Der Name der Event-Methode passt zum erwarteten Controller.
- Du testest auf einem unterstützten Controller: Taste vs. Dial.
- Fehler werden in die Plugin-Logs geschrieben.
- Async-Aufrufe werden awaited und abgefangen.
Zur schnellen Isolierung ersetze externe API-Arbeit durch:
await ev.action.setTitle('OK');
Wenn das funktioniert, liegt das Problem in deiner Integrationslogik, nicht in der Event-Zustellung von Stream Deck.
4. Property Inspector öffnet nicht
Prüfe:
PropertyInspectorPathzeigt auf eine existierende HTML-Datei.- Der Pfad ist relativ zum
*.sdPlugin-Verzeichnis. - Das HTML hängt nicht von entfernten Assets ab, die offline fehlschlagen.
- Browser-Konsolenfehler blockieren nicht die Initialisierung.
- Die Einstellungsnamen im Inspector passen zu den Namen der Action-Einstellungen.
Bevorzuge lokales sdpi-components.js für eine zuverlässige Property-Inspector-UI.
5. Einstellungen fehlen
Prüfe:
- Die Action behandelt Standardwerte.
- Der Property Inspector schreibt die erwarteten Keys.
- Du hast keinen Einstellungs-Key ohne Kompatibilitäts-Fallback umbenannt.
- Mehrere Actions teilen nicht versehentlich inkompatible Einstellungsformen.
Nutze tolerante Lesevorgänge:
const mode = ev.payload.settings.mode ?? 'default';
6. Bilder werden nicht angezeigt
Prüfe:
- Die Bildpfade im Manifest sind korrekt.
- Die Dateien existieren in
*.sdPlugin/imgs/. - Die Dateinamen stimmen exakt in der Groß-/Kleinschreibung überein.
- Die Bilder sind gepackt, nicht durch
.sdignoreignoriert. - Die Runtime-Bilderzeugung schreibt außerhalb unveränderlicher gepackter Dateien.
Wenn du Bilder aus dem Code setzt, stelle sicher, dass Bildformat und Data-URL von der aufgerufenen SDK-Methode akzeptiert werden.
7. Debugger kann sich nicht verbinden
Prüfe:
Nodejs.Debugist im Manifest aktiviert.- Stream Deck wurde nach Manifest-Änderungen neu gestartet.
- Du verbindest dich mit dem korrekten Node-Prozess.
- Ein fester Debug-Port ist nicht bereits belegt.
Temporärer fester Port:
{
"Nodejs": {
"Version": "24",
"Debug": "--inspect=127.0.0.1:12345"
}
}
8. Python kann das Gerät nicht öffnen
Prüfe:
- Die Stream Deck Desktop-App nutzt nicht dasselbe Gerät.
- Die Linux-HID-Berechtigungen erlauben dem aktuellen Nutzer den Zugriff auf das Deck.
- Das Gerät ist physisch verbunden und über USB sichtbar.
- Du schließt das Deck nach Abstürzen oder Neustarts.
- Das Ziel-Hardwaremodell wird von der Version der Python-Bibliothek unterstützt.
Direkte HID-Steuerung und offizielle Stream Deck App-Plugins sind unterschiedliche Betriebsmodi. Vermeide es, beide gleichzeitig auf derselben Hardware zu nutzen.
9. Pack schlägt fehl
Prüfe:
- Zuerst die Ausgabe von
streamdeck validate. - Die erforderlichen Dateien existieren in
*.sdPlugin. manifest.jsonreferenziert echte Dateien..sdignoreschließt keine erforderlichen Assets aus.- Die Felder für Version und UUID sind gültig.
- Das Plugin wurde vor dem Packen gebaut.
10. Checkliste für Release-Regressionen
Vor der Veröffentlichung:
- Die Neuinstallation funktioniert.
- Der Neustart von Stream Deck funktioniert.
- Alle Actions lassen sich zu einem sauberen Profil hinzufügen.
- Property Inspectors öffnen und speichern Einstellungen.
- Alte Einstellungen werden weiterhin korrekt gelesen.
- Der Offline-Modus bricht die lokale UI nicht.
- Logs sind nützlich, aber nicht zu geschwätzig.
- Keine privaten Pfade, Geheimnisse oder Debug-Dateien werden gepackt.