NEWS
[Entwicklungs-Tool] ioBroker dev-server
-
@oliverio Eine Idee hab ich noch, ich nutze in VSCode immer diese Erweiterung fürs Debugging, weil die source maps tatsächlich nicht zum neuen Debugger passen:
Wenns damit auch nicht geht, am besten mal deine Erkenntnisse in einem Issue sammeln.
-
Vielen Dank für den dev-server!
Aufsetzen auf Proxmox-CT (Debian), hat funktioniert.
Ich verbinde mich von einem Windows-Rechner aus, über VSCode und Erweiterung Remote - SSH.
Auch hier funktioniert soweit alles, d.h. neuen Adapter mittels https://github.com/ioBroker/create-adapter erstellen, und bei jedem Speichern in VSCode wird auch aktualisiert.
Was leider auch bei mir nicht funktioniert ist debuggen, also wie schon von @OliverIO oben ausführlich beschrieben.
Ich habe ebenso auch die von @AlCalzone empfohlene Erweiterung [Deprecated] Node Debug (legacy) getestet, auch hiermit funktioniert es nicht.Versions-Info VS Code:
Versions-Info dev-Server:
-
@acgua
mein beispiel oben betraf erst einmal das szenario
iobroker auf windows laufend und dann mit vs code auf dem gleichen rechner debuggen.
vs code reagiert zwar auf die breakpoints, aber leider nicht im richtigen ordner.
er reagiert tief unten im laufenden adapterverzeichnis und nicht auf die breaktpoints im projektverzeichnis. die im hintergrund gebildet sourcemap sollte das eigentlich dorthin mappen, den angaben nach sieht es eigentlich auch gut aus (soweit meine einsichten da reichen), aber er reagiert nicht.@Acgua
Dein Szenario ist ja remote-debugging.
Da scheint vs code wohl aktuell (ich geh davon aus, das es schon mal gegangen ist) wohl noch ein anderes Problem zu haben, welches ich in diesem Issue beschrieben habe und aktuell von connor bei microsoft in Bearbeitung ist
https://github.com/microsoft/vscode-js-debug/issues/1333Die Überschrift passt zwar nicht ganz, da der remote-code weder auf stoponentry noch auf einen breakpoint reagiert.
das szenario ist ein sehr simples mit nur 3 zeilen code.
testrepo ist im issue verlinkt -
@oliverio
Vielen Dank. Das schaue ich mir näher an.
Wird wohl nicht einfach werden, das Debuggen mit dem dev-server aktuell.... -
für remote debugging des adaptercodes funktioniert diese methode immer noch einwandfrei
als debugger verwende ich chrome
https://forum.iobroker.net/topic/22208/lösung-für-den-fehler-eisgitadapter in iobroker nicht starten, sondern über die shell aus dem verzeichnis /opt/iobroker
node --inspect-brk=<ip-adresse von iobroker>:9229 node_modules/iobroker.<adaptername>/main.js --force --logs
dann im chrome die folgende adresse
chrome://inspect aufrufen
und in configure die ip-adresse des iobrokers einpflegen
nach einer weile erscheint in der liste den zu debuggenden prozess,
auswählen und das debuggerfenster startet
kein hot reload, sondern der adapter muss über die shell neu gestartet werdenclient-code (also widgets) auch über chrome, prozess muss nicht extra gestartet werden
-
@oliverio said in [Entwicklungs-Tool] ioBroker dev-server:
ich habe den dev-server nun auch mal probiert.
habe aber ein problem mit dem setzten der breakpoints
ziel ist es einen adapter zu debuggen mit F5 aus visual code
das aufsetzen hat funktioniert.
auch der live-reload beim erstellen einer admin/jsonConfig.json
Wenn ich aber nun den Adapter direkt debuggen will,
bspw einen breakpoint direkt auf die erste Zeile des Adapters
werden nur die breakpoints erkannt, wenn ich die in der adapterdatei unterhalb des .dev-server/default/node_modules verzeichnis liegen.@alcalzone said in [Entwicklungs-Tool] ioBroker dev-server:
Wenns damit auch nicht geht, am besten mal deine Erkenntnisse in einem Issue sammeln.
Bei mir selbes Problem (lokale Installation unter Windows), daher habe ich nun ein Issue aufgemacht und alles da gesammelt:
Issue #286 - VSCode (Win10): Debugging/Breakpoints nur unterhalb .dev-server/
-
Ich habe das gleiche Problem unter Linux, Folgendermassen funktioniert es bei mir:
Terminal 1
dev-server run
Terminal 2
node --inspect=0.0.0.0:9229 .dev-server/default/node_modules/<Adapter-name>/ --logs --force
In VS code launch.json
{ "version": "0.2.0", "configurations": [ { "type": "node", "request": "attach", "name": "attach to ioBroker-Adapter", "address": "127.0.0.1", "port": 9229, "localRoot": "${workspaceFolder}", "remoteRoot": "${workspaceFolder}/.dev-server/default/node_modules/${workspaceFolderBasename}", "smartStep": true, "skipFiles": [ "<node_internals>/**" ] } }
Wichtig! Bei Verwendung von workspaceFolderBasename muß das Quellverzeichnis klein geschrieben werden, also nicht ioBroker.Xxx sondern iobroker.xxx
Ich habe gerade festgestellt, dass auch dev-server watch funtioniert und dann ohne Terminal 2 direkt attach der o.g. config aufzurufen
-
@dirkhe
ich probiere es mal aus -
@dirkhe sagte in [Entwicklungs-Tool] ioBroker dev-server:
Ich habe gerade festgestellt, dass auch dev-server watch funtioniert und dann ohne Terminal 2 direkt attach der o.g. config aufzurufen
Gehen breakpoints im ursprünglichen Code (nicht in .dev-server) dann auch?
-
@alcalzone ja, bei mir zickt die anzeige der punkte ein bisschen rum, aber anhalten tut er und dann kann man auch ganz normal debuggen.
-
@dirkhe Was genau meinst du mit zickt rum?
-
@alcalzone wenn man einen bp setzt, wird er rot und links in der liste der breakpoints angezeigt, wenn man dann einen 2. Gesetzt hat, wird der teilweise nicht angezeigt, beim 3. werden die dann wieder angezeigt. Habe ich jetzt aber nicht auf den dev server geschoben, sondern auf vc. Aber angehalten hat er immer korrekt.
-
Hallo, habe den dev-server jetzt auch laufen. So weit klappt es. Änderungen im admin-Verzeichnis (z.B. index_m.html) werden sofort wirksam. Allerdings erkennt er bei mir Änderungen im web-Verzeichnis leider nicht. Kann man das irgendwo aktivieren?
Danke und Grüße -
@s-bormann wo befindet sich dein web verzeichnis? Hot reload funktioniert nur mit der index_m.html und index_m.js.
In manchen fällen, wenn neue Dateien angelegt wurden, muss erstmalig "dev-server upload" ausgeführt werden. -
@schmakus sagte in [Entwicklungs-Tool] ioBroker dev-server:
@s-bormann wo befindet sich dein web verzeichnis? Hot reload funktioniert nur mit der index_m.html und index_m.js.
In manchen fällen, wenn neue Dateien angelegt wurden, muss erstmalig "dev-server upload" ausgeführt werden.Hallo,
das web-Verzeichnis befindet sich direkt im Adapter-Ordner (so wie der admin-Ordner auch). Es müsste nach iobroker-data/files/iqontrol gemappt werden. -
@s-bormann hat der Inhalt des web-ordners direkt etwas mit der admin config zu tun? wenn ja, sollte der web ordner nicht unterhalb von admin angelegt werden?
Ich habe die Erfahrung gemacht, dass das hot reload nur mit der index_m.html funktioniert. alles andere muss über dev-server upload erfolgen.
Jedoch wird der adapter immer neu gestartet, sollte sich etwas an einer Datei oberhalb vom admin ordner ändern. also z.b. der main.js oder sonstigen code files unter z.b. lib, etc. -
@schmakus Hi, der web-folder enthält Dateien, die mit dem web-Adapter als webseite zur Verfügung gestellt werden. Konkret geht es um iQontrol, eine Visualisierung. Hier liegen alle Dateien des Front-Ends im www-Folder.
-
irgendwo müsste ja konfiguriert sein, was "gewatcht" wird, vlt kann man da ja den www folder hinzufügen?
-
das müsste package.json, Abschnitt files sein
Der build wird durch das tool rimraf unterstützt
Die detailanweisungen wie der build (zumindest für den adapter) zu erfolgen hat steht im package
https://www.npmjs.com/package/@iobroker/adapter-devtiefer bin ich in die funktionsweise nicht eingestiegen.
ich mach das halt immer manuellfür mich ist nur der adapter und die adminoberfläche unterstützt anderes nicht
-
@oliverio sagte in [Entwicklungs-Tool] ioBroker dev-server:
das müsste package.json, Abschnitt files sein
Der build wird durch das tool rimraf unterstützt
Die detailanweisungen wie der build (zumindest für den adapter) zu erfolgen hat steht im package
https://www.npmjs.com/package/@iobroker/adapter-devtiefer bin ich in die funktionsweise nicht eingestiegen.
ich mach das halt immer manuellfür mich ist nur der adapter und die adminoberfläche unterstützt anderes nicht
Sieht bei mir so aus:
"files": [ "admin/", "!admin/i18n/", "img/", "lib/", "www/", "LICENSE", "main.js", "io-package.json", "package-lock.json" ],
Da steht ja www mit drin, klappt aber leider trotzdem nicht.
Habe jetzt ein vs-code-Plugin gefunden: fsdeploy. Damit kann ich erreichen, dass das www-Verzeichnis bei Änderungen geuploaded wird - mit diesem Umweg klappt es gut.
Denke trotzdem, dass das der dev-server selbst erledigen sollte, vielleicht ist es ja eine Anregung für die Entwickler.
Danke für Eure Hilfe!
VG