VIS-Widgets debuggen
Ein Widget läuft im Browser, nicht in Node.js. Der Debugger ist also der des Browsers, nicht der von Debugging. Der Weg dorthin hängt davon ab, ob das Widget für vis-2 oder für das ältere vis 1 gebaut ist.
vis-2
Widgets für vis-2 sind React-Komponenten und werden in einem eigenen Paket entwickelt. Als Ausgangspunkt dient die Vorlage ioBroker.vis-2-widgets-react-template.
Ohne laufenden ioBroker
Für die Arbeit am Aussehen und an der Logik genügt der eigene Entwicklungsserver. Im Quellverzeichnis der Widgets:
npm run start
Danach liegt das Widget unter http://localhost:4173. Es wird in einer
Demo-Umgebung angezeigt, Änderungen erscheinen sofort, und die
Entwicklerwerkzeuge des Browsers zeigen den ungebauten Quelltext mit
Haltepunkten und lesbaren Namen.
Mit laufendem ioBroker
Sobald das Widget echte Zustände braucht, kommt der dev-server dazu:
dev-server watch --noStartim Adapterverzeichnis starten.npm run startim Quellverzeichnis der Widgets starten.- Im Objekt
system.adapter.<adaptername>.0das Feldcommon.visWidgets.<widgetname>.urlaufhttp://localhost:4173/customWidgets.jssetzen. dev-server uploadaufrufen.- Den vis-2-Editor im Browser neu laden.
vis-2 lädt die Widgets dann vom Entwicklungsserver statt aus dem installierten Adapter. Ein Neuladen der Seite genügt nach jeder Änderung.
!> Den geänderten Wert von common.visWidgets…url vor der Veröffentlichung
wieder zurücksetzen. Sonst sucht die Installation beim Benutzer nach
localhost:4173.
?> Hilfsklassen und die Migration älterer Widgets beschreibt das Paket @iobroker/vis-2-widgets-react-dev.
vis 1
Widgets für vis 1 sind HTML-Dateien mit jQuery. Sie liegen im Datenspeicher
unter vis/widgets/ und werden von dort ausgeliefert, nicht aus dem
Adapterverzeichnis. Deshalb reicht es nicht, die Datei im Paket zu ändern.
Der Weg:
- Im Adapter
webin der Instanzkonfiguration den Cache abschalten. Er ist von Haus aus aus. - In
iobroker-data/iobroker.jsonunterobjectsdas AttributnoFileCacheauftruesetzen und ioBroker mitiobroker restartneu starten. - Die geänderte Widget-Datei mit
iobroker upload visin den Datenspeicher schieben. - Die Seite im Browser mit gedrückter Umschalttaste neu laden.
Widgets werden dynamisch nachgeladen, deshalb taucht die Datei in den
Browser-Quellen zunächst nicht auf. Ein console.log oder eine
debugger-Anweisung
im Widget hilft: Über die Ausgabe in der Konsole springt man in die Datei und
kann dort Haltepunkte setzen.
!> Anleitungen, die das Ersetzen von index.html durch index.html.original
und das Ändern von vis/cache.manifest beschreiben, sind überholt. Der
dahinterliegende Browser-Zwischenspeicher (Application Cache) wurde 2021 aus
allen Browsern entfernt.
Weiterführend
- vis und Widgets aus Sicht der Benutzer
- dev-server
- Debugging für den Node.js-Teil eines Adapters