Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Javascript Adapter Fehhlerlog nicht komplett

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.8k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

Javascript Adapter Fehhlerlog nicht komplett

Geplant Angeheftet Gesperrt Verschoben JavaScript
19 Beiträge 3 Kommentatoren 1.4k Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • frankjokeF Offline
    frankjokeF Offline
    frankjoke
    schrieb am zuletzt editiert von
    #1

    Ok, auf meinem Produktionssystem läuft noch immer der JS-Adapter V 3.6.4 und der Grund ist dass mein script nicht mehr funktionier ab V4 (ich verwende javascript und NICHT blocky!)!

    Jetzt hab ich mal das angeschaut und finde folgendes großes Problem:

    Erzeugt ein script einen Fehler dann hat der alte Adapter diesen und den Grund (mit callstack u.s.w) im log im Adapter angezeigt.
    Der neue Adapter zeigt im internen log nur nicht die 1. Zeile des Fehlers und man muss ins admin-log gehen umd den ganzen Fehler und seine Ursache zu sehen! Das ist ja super umständlich!

    Dann hab ich bemerkt dass der Adapter die globalen scripts die ich hatte zwar importiert hat aber sie nicht anzeigt!

    Wenn ich einen Ordner im rootverzeichnis anlege mit 'global' kommt der Fehler das er schon da ist, er wird mir aber nicht angezeigt :(

    Nun, auf zu einem meiner Testrechner wo ich JS noch nie installiert hatte, drauf und 'common' ist da aber 'global' nicht!
    'global' erscheint allerdings wenn man ein neues script dort kreiere, bei meinen Installationen wo ich vom alten Adapter auf den neuen umgestiegen bin funktioniert das leider nicht und die alten scripts im 'global' bleiben wie das 'global'-Verzeichnis unsichtbar, werden allerdings beim Start eines scripts mit eingebunden!

    Welches Objekt/State muss ich im Objektbaum löschen um die Ausgangssituation herzustellen und meine scripts neu einzubinden? Eigentlich hab ich ja nur ein script und 2x global scripts, ich könnte die ja normal in ein script zusammenführen aber es funktioniert nicht da die alten global scripte im hintergrund immer noch mitgeladen werden!

    Frank,

    NUC's, VM's und Raspi's unter Raspian, Ubuntu und Debian zum Testen.
    Adapter die ich selbst beigesteuert habe: BMW, broadlink2, radar2, systeminfo, km200, xs1 und einige im Anmarsch!

    paul53P 1 Antwort Letzte Antwort
    0
    • frankjokeF frankjoke

      Ok, auf meinem Produktionssystem läuft noch immer der JS-Adapter V 3.6.4 und der Grund ist dass mein script nicht mehr funktionier ab V4 (ich verwende javascript und NICHT blocky!)!

      Jetzt hab ich mal das angeschaut und finde folgendes großes Problem:

      Erzeugt ein script einen Fehler dann hat der alte Adapter diesen und den Grund (mit callstack u.s.w) im log im Adapter angezeigt.
      Der neue Adapter zeigt im internen log nur nicht die 1. Zeile des Fehlers und man muss ins admin-log gehen umd den ganzen Fehler und seine Ursache zu sehen! Das ist ja super umständlich!

      Dann hab ich bemerkt dass der Adapter die globalen scripts die ich hatte zwar importiert hat aber sie nicht anzeigt!

      Wenn ich einen Ordner im rootverzeichnis anlege mit 'global' kommt der Fehler das er schon da ist, er wird mir aber nicht angezeigt :(

      Nun, auf zu einem meiner Testrechner wo ich JS noch nie installiert hatte, drauf und 'common' ist da aber 'global' nicht!
      'global' erscheint allerdings wenn man ein neues script dort kreiere, bei meinen Installationen wo ich vom alten Adapter auf den neuen umgestiegen bin funktioniert das leider nicht und die alten scripts im 'global' bleiben wie das 'global'-Verzeichnis unsichtbar, werden allerdings beim Start eines scripts mit eingebunden!

      Welches Objekt/State muss ich im Objektbaum löschen um die Ausgangssituation herzustellen und meine scripts neu einzubinden? Eigentlich hab ich ja nur ein script und 2x global scripts, ich könnte die ja normal in ein script zusammenführen aber es funktioniert nicht da die alten global scripte im hintergrund immer noch mitgeladen werden!

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

      @frankjoke sagte:

      die globalen scripts die ich hatte zwar importiert hat aber sie nicht anzeigt!

      Expertenmodus einschalten ! (3 Punkte links oben)

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      frankjokeF 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @frankjoke sagte:

        die globalen scripts die ich hatte zwar importiert hat aber sie nicht anzeigt!

        Expertenmodus einschalten ! (3 Punkte links oben)

        frankjokeF Offline
        frankjokeF Offline
        frankjoke
        schrieb am zuletzt editiert von
        #3

        @paul53
        Super, das funktioniert schon mal, jetzt kann ich die globals wieder sehen und editieren um sie anzupassen.

        Das logging im adapter haut zwar immer noch nicht hin und ich bekomme ne Menge Lint-Fehler die keine sind (nicht bei Javascript, möglicherweise bei TS).

        Hat jemand eine Idee wie ich die lint-options ändrn kann damit einige der Fehler nicht angezeigt werden (Anzahl der Argumente z.B.).

        Wer weis welche script-Verstion unterstützt wird es2015,2016,2017 oder hängt das von der node-version ab?

        Frank,

        NUC's, VM's und Raspi's unter Raspian, Ubuntu und Debian zum Testen.
        Adapter die ich selbst beigesteuert habe: BMW, broadlink2, radar2, systeminfo, km200, xs1 und einige im Anmarsch!

        AlCalzoneA 1 Antwort Letzte Antwort
        0
        • frankjokeF frankjoke

          @paul53
          Super, das funktioniert schon mal, jetzt kann ich die globals wieder sehen und editieren um sie anzupassen.

          Das logging im adapter haut zwar immer noch nicht hin und ich bekomme ne Menge Lint-Fehler die keine sind (nicht bei Javascript, möglicherweise bei TS).

          Hat jemand eine Idee wie ich die lint-options ändrn kann damit einige der Fehler nicht angezeigt werden (Anzahl der Argumente z.B.).

          Wer weis welche script-Verstion unterstützt wird es2015,2016,2017 oder hängt das von der node-version ab?

          AlCalzoneA Offline
          AlCalzoneA Offline
          AlCalzone
          Developer
          schrieb am zuletzt editiert von AlCalzone
          #4

          @frankjoke sagte in Javascript Adapter Fehhlerlog nicht komplett:

          Das logging im adapter haut zwar immer noch nicht hin und ich bekomme ne Menge Lint-Fehler die keine sind

          Wenn du glaubst, dass Fehler keine sind, dann poste sie bitte, dass wir sie beheben oder ausbauen können :)

          Hat jemand eine Idee wie ich die lint-options ändrn kann damit einige der Fehler nicht angezeigt werden (Anzahl der Argumente z.B.).

          Optionen ändern geht nicht.

          Die Beschwerden über Anzahl der Argumente kannst du entweder ignorieren, oder per JSDoc die Argumente als optional deklarieren.

          Beispiel 1: arg1 ist ein erforderliches Argument vom Typ string:

          /**
           * @param {string} arg1
           */
          function foo(arg1) {
          }
          
          foo(); // Fehler!
          

          Beispiel 2: arg1 ist ein optionales Argument vom Typ string:

          /**
           * @param {string} [arg1]
           */
          function foo(arg1) {
          }
          
          foo(); // OK!
          foo(1); // Fehler!
          

          Beispiel 3: arg1 ist ein optionales Argument ohne bestimmten Typ:

          /**
           * @param [arg1]
           */
          function foo(arg1) {
          }
          
          foo(); // OK!
          foo(1); // OK!
          

          Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

          frankjokeF 1 Antwort Letzte Antwort
          0
          • AlCalzoneA AlCalzone

            @frankjoke sagte in Javascript Adapter Fehhlerlog nicht komplett:

            Das logging im adapter haut zwar immer noch nicht hin und ich bekomme ne Menge Lint-Fehler die keine sind

            Wenn du glaubst, dass Fehler keine sind, dann poste sie bitte, dass wir sie beheben oder ausbauen können :)

            Hat jemand eine Idee wie ich die lint-options ändrn kann damit einige der Fehler nicht angezeigt werden (Anzahl der Argumente z.B.).

            Optionen ändern geht nicht.

            Die Beschwerden über Anzahl der Argumente kannst du entweder ignorieren, oder per JSDoc die Argumente als optional deklarieren.

            Beispiel 1: arg1 ist ein erforderliches Argument vom Typ string:

            /**
             * @param {string} arg1
             */
            function foo(arg1) {
            }
            
            foo(); // Fehler!
            

            Beispiel 2: arg1 ist ein optionales Argument vom Typ string:

            /**
             * @param {string} [arg1]
             */
            function foo(arg1) {
            }
            
            foo(); // OK!
            foo(1); // Fehler!
            

            Beispiel 3: arg1 ist ein optionales Argument ohne bestimmten Typ:

            /**
             * @param [arg1]
             */
            function foo(arg1) {
            }
            
            foo(); // OK!
            foo(1); // OK!
            
            frankjokeF Offline
            frankjokeF Offline
            frankjoke
            schrieb am zuletzt editiert von
            #5

            @AlCalzone
            Was ich meine ist folgendes:
            Bee diesem Programm in Javascript erscheint im Log der/die Fehler aber das ist nur eine Zeile davin!
            2019-05-06_200754.png

            Im log erscheint der komplette Fehler:
            2019-05-06_200913.png

            Warum sehe ich das nicht im JS-Log? Muss immer auf den normalen log umschalten um mehr Hintergrund zum Fehler zu sehen!

            Frank,

            NUC's, VM's und Raspi's unter Raspian, Ubuntu und Debian zum Testen.
            Adapter die ich selbst beigesteuert habe: BMW, broadlink2, radar2, systeminfo, km200, xs1 und einige im Anmarsch!

            AlCalzoneA 1 Antwort Letzte Antwort
            0
            • frankjokeF frankjoke

              @AlCalzone
              Was ich meine ist folgendes:
              Bee diesem Programm in Javascript erscheint im Log der/die Fehler aber das ist nur eine Zeile davin!
              2019-05-06_200754.png

              Im log erscheint der komplette Fehler:
              2019-05-06_200913.png

              Warum sehe ich das nicht im JS-Log? Muss immer auf den normalen log umschalten um mehr Hintergrund zum Fehler zu sehen!

              AlCalzoneA Offline
              AlCalzoneA Offline
              AlCalzone
              Developer
              schrieb am zuletzt editiert von AlCalzone
              #6

              @frankjoke Darauf habe ich mich nicht bezogen. Ich wollte Beispiele für:

              ich bekomme ne Menge Lint-Fehler die keine sind

              Aber zu deinem Code-Schnipsel:
              Erkennt der Editor die fehlende Funktion als Fehler, wenn du als erste Zeile des Skripts // @ts-check einfügst?

              Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

              frankjokeF 1 Antwort Letzte Antwort
              0
              • AlCalzoneA AlCalzone

                @frankjoke Darauf habe ich mich nicht bezogen. Ich wollte Beispiele für:

                ich bekomme ne Menge Lint-Fehler die keine sind

                Aber zu deinem Code-Schnipsel:
                Erkennt der Editor die fehlende Funktion als Fehler, wenn du als erste Zeile des Skripts // @ts-check einfügst?

                frankjokeF Offline
                frankjokeF Offline
                frankjoke
                schrieb am zuletzt editiert von
                #7

                @AlCalzone
                Das ist nicht das Problem, @ts-ckeck ist bei default eingeschaltet, kann die Fehler mit // @ts-nocheck generell ausschalten was ich aber nicht will. Ich will nur TS-spezifische, aber nicht JS-checks ausschalten.

                let dl = 'debug';
                log('Das geht OK','debug');
                log('das nicht',dl);  ---------------> Fehler auf dl: Argument of type string is not assignable to parameter of type Loglevel
                
                function a2(x,y) {
                    let t = typeof x;
                    t='array'; -----------------------> Fehler auf t: type string not assignable to type "string" | "number" | ....
                    return t;
                }
                
                let s = Symbol('Symbol');
                s = 10; ----------------------------> Fehler auf s: type 10 is not assignable to 'symbol'
                

                Diese Fehler sind keine in Javascript, möglicherweise in TS (das ich nicht kenn).
                Ich will deshalb nur checks für JS einstellen können!

                Frank,

                NUC's, VM's und Raspi's unter Raspian, Ubuntu und Debian zum Testen.
                Adapter die ich selbst beigesteuert habe: BMW, broadlink2, radar2, systeminfo, km200, xs1 und einige im Anmarsch!

                1 Antwort Letzte Antwort
                0
                • AlCalzoneA Offline
                  AlCalzoneA Offline
                  AlCalzone
                  Developer
                  schrieb am zuletzt editiert von AlCalzone
                  #8

                  @frankjoke Danke für die Beispiele. Der Code funktioniert wie geschrieben zwar korrekt, die (scheinbar false-positive) Checks lassen sich aber nicht ohne Weiteres für Einzelfälle abschalten. Hierfür müsste quasi eine weniger strenge Definitionsdatei erstellt werden, die damit aber zwangsläufig wieder Fehler übersieht. Und auch das würde nur die Funktionsaufrufe (Beispiel 1) betreffen.
                  Für viele Fälle gibt es Abhilfen (die meiner Erfahrung nach) die Intention hinter dem Code schärfen und mögliche Fehlerquellen von vornherein vermeiden.


                  Beispiel 1: dl ist keine Konstante, könnte daher beim Aufruf von log einen inkorrekten Wert enthalten:

                  let dl = 'debug';
                  log('Das geht OK','debug');
                  dl = 'ich bin kein loglevel';
                  log('das nicht',dl);
                  

                  Die Typprüfung erkennt dl als Zeichenkette, prüft aber nicht, wie sich der Wert darin verändert (das wäre auch nicht immer statisch möglich). Abhilfe z.B. durch Definition von dl als Konstante:

                  const dl = 'debug';
                  log('Das geht OK','debug');
                  log('das geht jetzt auch OK',dl);
                  

                  oder Angabe des Typs von dl (was du vermutlich nicht willst)

                  /** @type {iobJS.LogLevel} */
                  let dl = 'debug';
                  log('Das geht OK','debug');
                  dl = 'info';
                  log('das geht jetzt auch OK',dl);
                  dl = 'kein loglevel'; // FEHLER!
                  

                  Beispiel 2: Ich vermute du willst den common.type eines Objekts ableiten. In diesem Fall leider nicht ohne weiteres zu lösen, weil das davon abhängt wie sich TypeScript verhält. Die Fehlermeldungen bekommst du leider nur weg, wenn du die Typprüfung komplett ausschaltest, oder alternativ eine Typanmerkung bzw. Typecast verwendest:

                  function a2(x,y) {
                      /** @type {iobJS.CommonType} */
                      let t = (typeof x); // Klammern sind nötig um den Typ zu erzwingen
                      t='array'; // Klappt
                      return t;
                  }
                  

                  oder

                  function a2(x,y) {
                      /** @type {string} */
                      let t = typeof x; // string ist allgemeiner als CommonType, daher keine Klammern nötig
                      t='array'; // Klappt
                      return t;
                  }
                  

                  Beispiel 3:
                  Sich im Laufe des Skripts veränderliche Typen sieht TypeScript nicht vor. Abhilfe nur durch komplettes Abschalten der Typprüfung oder Deklaration der Variable als any:

                  /** @type {any} */
                  let s = Symbol('Symbol');
                  s = 10;
                  

                  Gerade der dritte Fall ist aus Sicht eines "reinen" JS-Entwicklers sicher nervig. Ich habe dieses Verhalten aber lieben gelernt - nach meiner Erfahrung verhindert es viele Fehler, die dir sonst nicht aufgefallen wären (oder debuggen nötig machen).

                  Ist zwar Geschmackssache, aber wenn eine Variable an unterschiedlichen Stellen im Code Daten unterschiedlichen Typs enthält, ist es beim Lesen IMO einfacher zu verstehen und nachvollziehen, wenn man stattdessen zwei Variablen nimmt.

                  Wenn es doch mal sein muss:
                  Die Typprüfung für einzelne Variablen kannst du durch Angabe des Typs any deaktivieren, einzelne Fehler kannst du durch ein // @ts-ignore in der Zeile davor ausblenden.

                  Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                  frankjokeF 1 Antwort Letzte Antwort
                  0
                  • AlCalzoneA AlCalzone

                    @frankjoke Danke für die Beispiele. Der Code funktioniert wie geschrieben zwar korrekt, die (scheinbar false-positive) Checks lassen sich aber nicht ohne Weiteres für Einzelfälle abschalten. Hierfür müsste quasi eine weniger strenge Definitionsdatei erstellt werden, die damit aber zwangsläufig wieder Fehler übersieht. Und auch das würde nur die Funktionsaufrufe (Beispiel 1) betreffen.
                    Für viele Fälle gibt es Abhilfen (die meiner Erfahrung nach) die Intention hinter dem Code schärfen und mögliche Fehlerquellen von vornherein vermeiden.


                    Beispiel 1: dl ist keine Konstante, könnte daher beim Aufruf von log einen inkorrekten Wert enthalten:

                    let dl = 'debug';
                    log('Das geht OK','debug');
                    dl = 'ich bin kein loglevel';
                    log('das nicht',dl);
                    

                    Die Typprüfung erkennt dl als Zeichenkette, prüft aber nicht, wie sich der Wert darin verändert (das wäre auch nicht immer statisch möglich). Abhilfe z.B. durch Definition von dl als Konstante:

                    const dl = 'debug';
                    log('Das geht OK','debug');
                    log('das geht jetzt auch OK',dl);
                    

                    oder Angabe des Typs von dl (was du vermutlich nicht willst)

                    /** @type {iobJS.LogLevel} */
                    let dl = 'debug';
                    log('Das geht OK','debug');
                    dl = 'info';
                    log('das geht jetzt auch OK',dl);
                    dl = 'kein loglevel'; // FEHLER!
                    

                    Beispiel 2: Ich vermute du willst den common.type eines Objekts ableiten. In diesem Fall leider nicht ohne weiteres zu lösen, weil das davon abhängt wie sich TypeScript verhält. Die Fehlermeldungen bekommst du leider nur weg, wenn du die Typprüfung komplett ausschaltest, oder alternativ eine Typanmerkung bzw. Typecast verwendest:

                    function a2(x,y) {
                        /** @type {iobJS.CommonType} */
                        let t = (typeof x); // Klammern sind nötig um den Typ zu erzwingen
                        t='array'; // Klappt
                        return t;
                    }
                    

                    oder

                    function a2(x,y) {
                        /** @type {string} */
                        let t = typeof x; // string ist allgemeiner als CommonType, daher keine Klammern nötig
                        t='array'; // Klappt
                        return t;
                    }
                    

                    Beispiel 3:
                    Sich im Laufe des Skripts veränderliche Typen sieht TypeScript nicht vor. Abhilfe nur durch komplettes Abschalten der Typprüfung oder Deklaration der Variable als any:

                    /** @type {any} */
                    let s = Symbol('Symbol');
                    s = 10;
                    

                    Gerade der dritte Fall ist aus Sicht eines "reinen" JS-Entwicklers sicher nervig. Ich habe dieses Verhalten aber lieben gelernt - nach meiner Erfahrung verhindert es viele Fehler, die dir sonst nicht aufgefallen wären (oder debuggen nötig machen).

                    Ist zwar Geschmackssache, aber wenn eine Variable an unterschiedlichen Stellen im Code Daten unterschiedlichen Typs enthält, ist es beim Lesen IMO einfacher zu verstehen und nachvollziehen, wenn man stattdessen zwei Variablen nimmt.

                    Wenn es doch mal sein muss:
                    Die Typprüfung für einzelne Variablen kannst du durch Angabe des Typs any deaktivieren, einzelne Fehler kannst du durch ein // @ts-ignore in der Zeile davor ausblenden.

                    frankjokeF Offline
                    frankjokeF Offline
                    frankjoke
                    schrieb am zuletzt editiert von
                    #9

                    @AlCalzone
                    Das ist ja was ich meine, ein JS-Script sollte mit JS-Regeln gecheckt werden und ein TS-script mit TS-Regeln!

                    Ich kann kein TS und programmier nur in JS und da gibt es zwar Klassen aber sonst nur die Basistypen und eine Variable kann alles beinhalten.

                    Also wäre meines Erachtens die Lösung für JS-scripts eine andere Definitionsdatei zu verwenden richtig. Ich krieg in VS-Code ja auch nur die TS-Fehler wenn ich eine .ts-Datei editiere.

                    Frank,

                    NUC's, VM's und Raspi's unter Raspian, Ubuntu und Debian zum Testen.
                    Adapter die ich selbst beigesteuert habe: BMW, broadlink2, radar2, systeminfo, km200, xs1 und einige im Anmarsch!

                    AlCalzoneA 1 Antwort Letzte Antwort
                    0
                    • frankjokeF frankjoke

                      @AlCalzone
                      Das ist ja was ich meine, ein JS-Script sollte mit JS-Regeln gecheckt werden und ein TS-script mit TS-Regeln!

                      Ich kann kein TS und programmier nur in JS und da gibt es zwar Klassen aber sonst nur die Basistypen und eine Variable kann alles beinhalten.

                      Also wäre meines Erachtens die Lösung für JS-scripts eine andere Definitionsdatei zu verwenden richtig. Ich krieg in VS-Code ja auch nur die TS-Fehler wenn ich eine .ts-Datei editiere.

                      AlCalzoneA Offline
                      AlCalzoneA Offline
                      AlCalzone
                      Developer
                      schrieb am zuletzt editiert von
                      #10

                      @frankjoke Das geht so leider nicht - ich kann nicht sagen "prüfe diese Datei nach JS-Regeln". Vor allem: was sind diese "Regeln"? Würde man für alle Variablen den Typ any (beliebig) annehmen, würde auch die Überprüfung von Funktionsargumenten nicht funktionieren.

                      Mit einer anderen Definitionsdatei könnte man nur die Typprüfung für Funktionargumente abschalten bzw. abschwächen (Fall 1). die anderen "Probleme" (Fall 2 und 3) kriegst du nur durch // @ts-nocheck weg - dann geht aber auch 1. nicht mehr richtig.

                      Unter der Haube nutzt VSCode auch TypeScript für die Prüfung von JavaScripts. Ich habe deine Beispiele 2 und 3 mal 1:1 in VSCode kopiert (Dateiendung .js):
                      0ca1550d-5690-4a77-adfa-ecaeacb9f14a-grafik.png

                      6f1ba9a3-83d1-46d4-9415-c2454680c9ea-grafik.png

                      Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                      frankjokeF 1 Antwort Letzte Antwort
                      0
                      • AlCalzoneA AlCalzone

                        @frankjoke Das geht so leider nicht - ich kann nicht sagen "prüfe diese Datei nach JS-Regeln". Vor allem: was sind diese "Regeln"? Würde man für alle Variablen den Typ any (beliebig) annehmen, würde auch die Überprüfung von Funktionsargumenten nicht funktionieren.

                        Mit einer anderen Definitionsdatei könnte man nur die Typprüfung für Funktionargumente abschalten bzw. abschwächen (Fall 1). die anderen "Probleme" (Fall 2 und 3) kriegst du nur durch // @ts-nocheck weg - dann geht aber auch 1. nicht mehr richtig.

                        Unter der Haube nutzt VSCode auch TypeScript für die Prüfung von JavaScripts. Ich habe deine Beispiele 2 und 3 mal 1:1 in VSCode kopiert (Dateiendung .js):
                        0ca1550d-5690-4a77-adfa-ecaeacb9f14a-grafik.png

                        6f1ba9a3-83d1-46d4-9415-c2454680c9ea-grafik.png

                        frankjokeF Offline
                        frankjokeF Offline
                        frankjoke
                        schrieb am zuletzt editiert von
                        #11

                        @AlCalzone
                        Al, das kommt wenn du immer alle settings auf typescript hast!

                        Mein VS.Code verwendet Javascript settings für JS files und TS für TS.
                        Wir haben ja früher auch nur einen JS-Lint beim JS-Adapter gehabt!

                        VS-Code offeriert ESLint und TSLint, und damit kann ich beides getrennt betrachten. Habe gehört dass ESLint irgendwann beides können soll und nur ein flag umgesetzt werden musss...

                        Egal, laut letztem Javascript-report verwenden nur 13% der Entwickler TS und ich finde es nicht richtig es allen aufzuzwingen.

                        Frank,

                        NUC's, VM's und Raspi's unter Raspian, Ubuntu und Debian zum Testen.
                        Adapter die ich selbst beigesteuert habe: BMW, broadlink2, radar2, systeminfo, km200, xs1 und einige im Anmarsch!

                        AlCalzoneA 2 Antworten Letzte Antwort
                        0
                        • frankjokeF frankjoke

                          @AlCalzone
                          Al, das kommt wenn du immer alle settings auf typescript hast!

                          Mein VS.Code verwendet Javascript settings für JS files und TS für TS.
                          Wir haben ja früher auch nur einen JS-Lint beim JS-Adapter gehabt!

                          VS-Code offeriert ESLint und TSLint, und damit kann ich beides getrennt betrachten. Habe gehört dass ESLint irgendwann beides können soll und nur ein flag umgesetzt werden musss...

                          Egal, laut letztem Javascript-report verwenden nur 13% der Entwickler TS und ich finde es nicht richtig es allen aufzuzwingen.

                          AlCalzoneA Offline
                          AlCalzoneA Offline
                          AlCalzone
                          Developer
                          schrieb am zuletzt editiert von AlCalzone
                          #12

                          @frankjoke sagte in Javascript Adapter Fehhlerlog nicht komplett:

                          Mein VS.Code verwendet Javascript settings für JS files und TS für TS.

                          Mir sind keine solchen Einstellungen bekannt. Kannst du deine vielleicht mal zeigen? Das einzige was ich diesbezüglich aktiv habe ist "javascript.implicitProjectConfig.checkJs": true, was nichts anders tut als //@ts-check am Anfang jeder Datei.

                          @frankjoke sagte in Javascript Adapter Fehhlerlog nicht komplett:

                          VS-Code offeriert ESLint und TSLint, und damit kann ich beides getrennt betrachten. Habe gehört dass ESLint irgendwann beides können soll und nur ein flag umgesetzt werden musss...

                          ESLint/TSLint hat grundsätzlich erst mal nix mit der Typprüfung zu tun, die auch im ioBroker-Editor aktiv ist. Das sind Plugins, die den Language Service nutzen.

                          Kann es sein, dass das was du mit JavaScript-Einstellungen meinst, Typprüfung=aus und ESLint=an ist?
                          Edit: Das könnte tatsächlich möglich sein, umzusetzen. Ich hab mal ein Issue aufgemacht: https://github.com/ioBroker/ioBroker.javascript/issues/377

                          Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                          frankjokeF 1 Antwort Letzte Antwort
                          0
                          • AlCalzoneA AlCalzone

                            @frankjoke sagte in Javascript Adapter Fehhlerlog nicht komplett:

                            Mein VS.Code verwendet Javascript settings für JS files und TS für TS.

                            Mir sind keine solchen Einstellungen bekannt. Kannst du deine vielleicht mal zeigen? Das einzige was ich diesbezüglich aktiv habe ist "javascript.implicitProjectConfig.checkJs": true, was nichts anders tut als //@ts-check am Anfang jeder Datei.

                            @frankjoke sagte in Javascript Adapter Fehhlerlog nicht komplett:

                            VS-Code offeriert ESLint und TSLint, und damit kann ich beides getrennt betrachten. Habe gehört dass ESLint irgendwann beides können soll und nur ein flag umgesetzt werden musss...

                            ESLint/TSLint hat grundsätzlich erst mal nix mit der Typprüfung zu tun, die auch im ioBroker-Editor aktiv ist. Das sind Plugins, die den Language Service nutzen.

                            Kann es sein, dass das was du mit JavaScript-Einstellungen meinst, Typprüfung=aus und ESLint=an ist?
                            Edit: Das könnte tatsächlich möglich sein, umzusetzen. Ich hab mal ein Issue aufgemacht: https://github.com/ioBroker/ioBroker.javascript/issues/377

                            frankjokeF Offline
                            frankjokeF Offline
                            frankjoke
                            schrieb am zuletzt editiert von
                            #13

                            @AlCalzone
                            Hmm, kann sein, ich habe ESLint und TSLint installiert und in TSLint das Flag auf false, damit werden JS-Dateien von ESLint gecheckt..

                            Frank,

                            NUC's, VM's und Raspi's unter Raspian, Ubuntu und Debian zum Testen.
                            Adapter die ich selbst beigesteuert habe: BMW, broadlink2, radar2, systeminfo, km200, xs1 und einige im Anmarsch!

                            AlCalzoneA 1 Antwort Letzte Antwort
                            0
                            • frankjokeF frankjoke

                              @AlCalzone
                              Hmm, kann sein, ich habe ESLint und TSLint installiert und in TSLint das Flag auf false, damit werden JS-Dateien von ESLint gecheckt..

                              AlCalzoneA Offline
                              AlCalzoneA Offline
                              AlCalzone
                              Developer
                              schrieb am zuletzt editiert von AlCalzone
                              #14

                              @frankjoke Ja dann hast du die Typprüfung wohl komplett aus, es sei denn du aktivierst sie mit // @ts-check. Wenn ich mal wieder Zeit für sowas habe, schaue ich mir mal an wie man die Prüffunktionen im ioBroker-Editor flexibler gestalten kann.

                              BTW, ESLint kann jetzt auch TypeScript: https://github.com/AlCalzone/node-zwave-js/commit/497ca22284d2100a372253581c37347f284ed8c9

                              Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                              frankjokeF 1 Antwort Letzte Antwort
                              0
                              • AlCalzoneA AlCalzone

                                @frankjoke Ja dann hast du die Typprüfung wohl komplett aus, es sei denn du aktivierst sie mit // @ts-check. Wenn ich mal wieder Zeit für sowas habe, schaue ich mir mal an wie man die Prüffunktionen im ioBroker-Editor flexibler gestalten kann.

                                BTW, ESLint kann jetzt auch TypeScript: https://github.com/AlCalzone/node-zwave-js/commit/497ca22284d2100a372253581c37347f284ed8c9

                                frankjokeF Offline
                                frankjokeF Offline
                                frankjoke
                                schrieb am zuletzt editiert von
                                #15

                                @AlCalzone
                                Kein großes Problem momentan, hab nur ein einziges script in meiner producktions-maschine welches ich mit meinem nächsten Adapter ersetzten kann. Sonst verwend' ichs nur zum Test.

                                Was mich noch mehr stört ist dass anscheined Control-S für 'Save' nicht mehr funktioniert! Muss immer auf den button klicken...

                                Frank,

                                NUC's, VM's und Raspi's unter Raspian, Ubuntu und Debian zum Testen.
                                Adapter die ich selbst beigesteuert habe: BMW, broadlink2, radar2, systeminfo, km200, xs1 und einige im Anmarsch!

                                AlCalzoneA 1 Antwort Letzte Antwort
                                0
                                • frankjokeF frankjoke

                                  @AlCalzone
                                  Kein großes Problem momentan, hab nur ein einziges script in meiner producktions-maschine welches ich mit meinem nächsten Adapter ersetzten kann. Sonst verwend' ichs nur zum Test.

                                  Was mich noch mehr stört ist dass anscheined Control-S für 'Save' nicht mehr funktioniert! Muss immer auf den button klicken...

                                  AlCalzoneA Offline
                                  AlCalzoneA Offline
                                  AlCalzone
                                  Developer
                                  schrieb am zuletzt editiert von
                                  #16

                                  @frankjoke sagte in Javascript Adapter Fehhlerlog nicht komplett:

                                  Was mich noch mehr stört ist dass anscheined Control-S für 'Save' nicht mehr funktioniert! Muss immer auf den button klicken...

                                  Dann mach am besten mal ein Issue auf

                                  Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                                  1 Antwort Letzte Antwort
                                  0
                                  • frankjokeF frankjoke

                                    @AlCalzone
                                    Al, das kommt wenn du immer alle settings auf typescript hast!

                                    Mein VS.Code verwendet Javascript settings für JS files und TS für TS.
                                    Wir haben ja früher auch nur einen JS-Lint beim JS-Adapter gehabt!

                                    VS-Code offeriert ESLint und TSLint, und damit kann ich beides getrennt betrachten. Habe gehört dass ESLint irgendwann beides können soll und nur ein flag umgesetzt werden musss...

                                    Egal, laut letztem Javascript-report verwenden nur 13% der Entwickler TS und ich finde es nicht richtig es allen aufzuzwingen.

                                    AlCalzoneA Offline
                                    AlCalzoneA Offline
                                    AlCalzone
                                    Developer
                                    schrieb am zuletzt editiert von
                                    #17

                                    @frankjoke sagte in Javascript Adapter Fehhlerlog nicht komplett:

                                    Egal, laut letztem Javascript-report verwenden nur 13% der Entwickler TS

                                    Moin Frank, ich bin gerade zufällig auf diese Statistik gestoßen:
                                    https://2018.stateofjs.com/javascript-flavors/overview/
                                    Danach wird TS von 46% der Entwickler verwendet.

                                    Aber da man keiner Statistik trauen soll, die man nicht selbst gefälscht hat... Auf welchen Report beziehst du dich?

                                    Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                                    frankjokeF 1 Antwort Letzte Antwort
                                    0
                                    • AlCalzoneA AlCalzone

                                      @frankjoke sagte in Javascript Adapter Fehhlerlog nicht komplett:

                                      Egal, laut letztem Javascript-report verwenden nur 13% der Entwickler TS

                                      Moin Frank, ich bin gerade zufällig auf diese Statistik gestoßen:
                                      https://2018.stateofjs.com/javascript-flavors/overview/
                                      Danach wird TS von 46% der Entwickler verwendet.

                                      Aber da man keiner Statistik trauen soll, die man nicht selbst gefälscht hat... Auf welchen Report beziehst du dich?

                                      frankjokeF Offline
                                      frankjokeF Offline
                                      frankjoke
                                      schrieb am zuletzt editiert von
                                      #18

                                      @AlCalzone

                                      Habe das in einem Artikel gelesen der sich auf die Git-Statistik bezog (https://www.benfrederickson.com/ranking-programming-languages-by-github-users/).
                                      Sorry, habe dann selbst nachgerechnet und es sind fast 15% aus Git (wenn ich Javascript und TS zusammenzähle und das als 100% ansehe).

                                      Bei deiner Statistik würde ich auch unter die 46% fallen da ich TS in einem einzigen Projekt das nur unter TS-lief verwendet habe (eigentlich nur js-code auf TS umgeschrieben), aber nie in meinen eigenen Projekten.

                                      Frank,

                                      NUC's, VM's und Raspi's unter Raspian, Ubuntu und Debian zum Testen.
                                      Adapter die ich selbst beigesteuert habe: BMW, broadlink2, radar2, systeminfo, km200, xs1 und einige im Anmarsch!

                                      AlCalzoneA 1 Antwort Letzte Antwort
                                      0
                                      • frankjokeF frankjoke

                                        @AlCalzone

                                        Habe das in einem Artikel gelesen der sich auf die Git-Statistik bezog (https://www.benfrederickson.com/ranking-programming-languages-by-github-users/).
                                        Sorry, habe dann selbst nachgerechnet und es sind fast 15% aus Git (wenn ich Javascript und TS zusammenzähle und das als 100% ansehe).

                                        Bei deiner Statistik würde ich auch unter die 46% fallen da ich TS in einem einzigen Projekt das nur unter TS-lief verwendet habe (eigentlich nur js-code auf TS umgeschrieben), aber nie in meinen eigenen Projekten.

                                        AlCalzoneA Offline
                                        AlCalzoneA Offline
                                        AlCalzone
                                        Developer
                                        schrieb am zuletzt editiert von
                                        #19

                                        @frankjoke Danke für den Link. Das bestätigt wieder meine Hypothese mit dem selbst fälschen...

                                        Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                                        1 Antwort Letzte Antwort
                                        0
                                        Antworten
                                        • In einem neuen Thema antworten
                                        Anmelden zum Antworten
                                        • Älteste zuerst
                                        • Neuste zuerst
                                        • Meiste Stimmen


                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate

                                        906

                                        Online

                                        32.4k

                                        Benutzer

                                        81.5k

                                        Themen

                                        1.3m

                                        Beiträge
                                        Community
                                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                        ioBroker Community 2014-2025
                                        logo
                                        • Anmelden

                                        • Du hast noch kein Konto? Registrieren

                                        • Anmelden oder registrieren, um zu suchen
                                        • Erster Beitrag
                                          Letzter Beitrag
                                        0
                                        • Home
                                        • Aktuell
                                        • Tags
                                        • Ungelesen 0
                                        • Kategorien
                                        • Unreplied
                                        • Beliebt
                                        • GitHub
                                        • Docu
                                        • Hilfe