Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Debuggen von JavaScript über VSCode per Definitionsdatei

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Debuggen von JavaScript über VSCode per Definitionsdatei

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      Speedy-Turbo last edited by Speedy-Turbo

      Hallo,

      Ich bin Anfänger was JavaScript betrifft und wollte mal nachfragen ob es möglich ist per VSCode IoBroker JavaScripte zu debuggen,
      Erweiterung ioBroker.javasript ist installiert und funktioniert auch.

      Kann man aber auch "richtig" Debuggen über Definitionsdatei ?

      Hatte ein Script erstellt und diese Zeilen am Anfang eingefügt:

      /// <reference path="javascript.d.ts" />
      require("fs");
      // @ts-check
      
      • jsconfig.json
      {
          "compilerOptions": {
              "lib": [ "es6" ]
          }
      }
      

      und eine javascript.d.ts im gleichen Ordner.
      https://github.com/ioBroker/ioBroker.javascript/blob/master/lib/javascript.d.ts

      Wenn ich jetzt z.B. auf den Befehl createState mit der rechten Maustaste gehe - Gehe zur Definition - spingt er auch in die javascript.d.ts
      Wenn ich auf Debuggen gehe kommt die Meldung: "Uncaught ReferenceError: createState is not defined"

      Eventuell mache ich jetzt aber auch ein Denkfehler und die javascript.d.ts ist gar nicht dafür gedacht um das Umfeld von IOBroker in einer anderen Umgebung abzubilden.
      Oder muß einfach nur die lauch.json angepasst werden ?

      {
          // Verwendet IntelliSense zum Ermitteln möglicher Attribute.
          // Zeigen Sie auf vorhandene Attribute, um die zugehörigen Beschreibungen anzuzeigen.
          // Weitere Informationen finden Sie unter https://go.microsoft.com/fwlink/?linkid=830387
          "version": "0.2.0",
          "configurations": [
              {
                  "type": "pwa-node",
                  "request": "launch",
                  "name": "Launch Program",
                  "skipFiles": [
                      "<node_internals>/**"
                  ],
                  "program": "${workspaceFolder}\\Fenster_Zaehler_Test.js",
                  "outFiles": [
                      "${workspaceFolder}/**/*.js"
                  ]
              }
          ]
      }
      

      Gruß Speedy

      AlCalzone 1 Reply Last reply Reply Quote 0
      • AlCalzone
        AlCalzone Developer @Speedy-Turbo last edited by

        @speedy-turbo Du kannst ioBroker-Skripte nicht einfach so ausführen. Da fehlt die Sandbox/Runtime aus dem Adapter.
        Die Definitionsdatei ist für Syntax-Hilfe und Auto-Vervollständigung - .d.ts-Dateien enthalten keinerlei Funktionalität, die sind ausschließlich beschreibend.

        S 1 Reply Last reply Reply Quote 0
        • S
          Speedy-Turbo @AlCalzone last edited by

          @alcalzone
          Danke für die Antwort. Da bin ich dann total in die falsche Richtung abgebogen.

          Gibt es denn eine andere Möglichkeit mit VSCode JavaScript direkt auf den IOBroker zu debuggen?
          Remote Explorer ?
          Docker ?
          node --inspect-brk node_modules/iobroker.javascript/main.js --force --logs ?

          AlCalzone 1 Reply Last reply Reply Quote 0
          • AlCalzone
            AlCalzone Developer @Speedy-Turbo last edited by AlCalzone

            @speedy-turbo sagte in Debuggen von JavaScript über VSCode per Definitionsdatei:

            node --inspect-brk node_modules/iobroker.javascript/main.js --force --logs ?

            könnte gehen (oder kurz iobroker debug javascript), bin mir aber nicht sicher, ob du da an die Skripte selbst rankommst.

            Du kannst aber auch den im Adapter integrierten Skript-Debugger nutzen!
            Expertenmodus (im Skript-Tab) an, dann:
            b9bed358-fd55-45d2-af5a-417a6c75f4da-grafik.png

            S 1 Reply Last reply Reply Quote 0
            • S
              Speedy-Turbo @AlCalzone last edited by

              @alcalzone
              Wollte mich auf den VSCode mal konzentrieren

              Ich habe jetzt auf den Docker ein Container mit IOBroker laufen.
              Restore vom Raspberry PI IOBroker auf Docker IOBroker gemacht um eine Testumgebung zu haben.
              Alle aktiven Java Scripts auf Docker gestoppt bis auf ein Testscript,
              Hier erste Zeile debugger; eingegeben damit er hier anhält.

              Auf IOBroker Docker folgendes eingegeben (auf 0.0.0.0 muß man auch erst einmal kommen):

              iobroker stop javascript
              node --inspect-brk=0.0.0.0:9229 node_modules/iobroker.javascript/main.js --force –logs
              

              Im VSCode in der der launch.json :

              version": "0.2.0",
                  "configurations": [
                      {
                          "name": "Remote IOBroker",
                          "address": "192.168.178.101",
                          "port": 9229,
                          "request": "attach",
                      },
                      {
                          "name": "Docker IOBroker",
                          "address": "127.0.0.1",
                          "port": 9229,
                          "request": "attach",
                      },
              

              Das funktioniert auch einiger maßen.
              Man kann die Testdatei, die auf den IOBroker liegt auch soweit debuggen
              VSCode_debuggen.png
              Man muß aber immer wenn man von vorne beginnen will, in den IOBroker gehen und dort Neutstart drücken
              Neustart.png
              Auch Breakpoints, die im VSCode gesetzt werden, werden anscheinend ignoriert

              Ich hatte aber gedacht, dass ich eine JavaScript Datei, die ich vorher vom IOBroker übertragen habe, direkt über diesen Weg debuggen kann.

              Viele bauen doch selber Adapter. Giebt es da nicht welche, die das über VSCode machen ?

              AlCalzone OliverIO 2 Replies Last reply Reply Quote 0
              • AlCalzone
                AlCalzone Developer @Speedy-Turbo last edited by

                @speedy-turbo sagte in Debuggen von JavaScript über VSCode per Definitionsdatei:

                Viele bauen doch selber Adapter. Giebt es da nicht welche, die das über VSCode machen ?

                Natürlich, aber die lassen sich vieeeeel einfacher debuggen als ein Skript, was in einer Javascript VM von einem Adapter ausgeführt wird.

                1 Reply Last reply Reply Quote 0
                • OliverIO
                  OliverIO @Speedy-Turbo last edited by

                  @speedy-turbo

                  bei den skripten im javascriptadapter bleibt dir nur der eingebaute debugger
                  und der ist auch nicht ganz so komfortabel.

                  daher bleibt dir nur der alte weg mit ganz vielen console.debug Anweisungen.

                  1 Reply Last reply Reply Quote 0
                  • S
                    Speedy-Turbo last edited by

                    @oliverio @AlCalzone

                    OK Danke.
                    Dann scheint das debuggen eines Adapters über VBCode tatsächlicher einfacher zu sein als das einzelne Script im Java Adapter.
                    Ist irgendwie auch logisch.

                    Also der einzige Weg das über VSCode zu machen:
                    (Scripte werden wohl in /opt/iobroker/iobroker-data/objects.json gespeichert, also die direkt zu editieren geht wohl nicht.)

                    1. IOBroker: iobroker stop javascript
                      node --inspect-brk=0.0.0.0:9229 node_modules/iobroker.javascript/main.js --force –logs
                    2. VSCode: Scripte herunterladen mit z.B. der Extension IOBroker.javascript
                    3. VSCode: Script bearbeiten
                    4. VSCode: Script wieder hochladen
                    5. VSCode: launch.json starten

                    Habe mir zwei Fenster in VBCode geöffnet.
                    Im ersten ioBroker Extension geöffnet und hier editiere ich dann die Java Datei aus dem IOBroker
                    Sobald diese geändert wurden ist (Einstellungen -Auto Save auf after delay oder einfach nur speichern) erscheint sie unter Changed Scripts und kann dann wieder hochgeladen werden.

                    In der zweiten Sitzung den Debugger geöffnet und auf Weiter gedrückt. Änderungen sind da und man kann jede einzelne Variable debuggen.

                    Damit kann ich dann eventuell doch alles mit VBCode machen.
                    VSCode_debuggen.png

                    1 Reply Last reply Reply Quote 0
                    • First post
                      Last post

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    606
                    Online

                    31.8k
                    Users

                    80.0k
                    Topics

                    1.3m
                    Posts

                    3
                    8
                    515
                    Loading More Posts
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes
                    Reply
                    • Reply as topic
                    Log in to reply
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                    The ioBroker Community 2014-2023
                    logo