Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Javascript startet nicht (unsinnige Fehlermeldung)

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Javascript startet nicht (unsinnige Fehlermeldung)

    This topic has been deleted. Only users with topic management privileges can see it.
    • W
      WolfgangFB last edited by

      Ich habe ein Javascript das sich nicht mehr starten lässt. Es kommt die Meldung:

      12:47:11.492	error	javascript.0 (17388) script.js.Verbrauch.Heizung compile failed: at script.js.Verbrauch.Heizung:77
      

      Das Script hat aber nur 73 Zeilen. Dann habe ich testweise mal in Zeile 2

      console.log('Skript start');
      bla  
      var fs = require('fs'); 
      

      ein sinnloses "bla" eingefügt, die Fehlermeldung bleibt aber gleich (Zeile 77), Der Javascript Adapter wurde mehrmals neu gestartet, das Ergebnis bleibt gleich.
      Die js Dateien werden als Mirror in einem Verzeichnis gespeichert. Wenn ich die Datei da mit Ultraedit oder was auch immer ansehe ist auch kein Zeichen mehr hinter dem letzten Semikolon.
      Wie bringe ich Javascript dazu, wieder "normal" zu laufen.

      sigi234 dslraser 2 Replies Last reply Reply Quote 0
      • sigi234
        sigi234 Forum Testing Most Active @WolfgangFB last edited by

        @wolfgangfb sagte in Javascript startet nicht (unsinnige Fehlermeldung):

        Wie bringe ich Javascript dazu, wieder "normal" zu laufen.

        Stoppe das Skript und stell das ganze mal ein.

        W 1 Reply Last reply Reply Quote 0
        • W
          WolfgangFB @sigi234 last edited by

          @sigi234

          Das Skript habe ich mehrmals gestoppt und wieder gestartet, das Ergebnis bleibt gleich. Was meinst Du mit "stell das ganze mal ein"?

          sigi234 1 Reply Last reply Reply Quote 0
          • sigi234
            sigi234 Forum Testing Most Active @WolfgangFB last edited by sigi234

            @wolfgangfb sagte in Javascript startet nicht (unsinnige Fehlermeldung):

            @sigi234

            Das Skript habe ich mehrmals gestoppt und wieder gestartet, das Ergebnis bleibt gleich

            Wenn du das Skript Stopps, läuft JS auch nicht?

            @wolfgangfb sagte in Javascript startet nicht (unsinnige Fehlermeldung):

            Was meinst Du mit "stell das ganze mal ein"?

            Das komplette Skript was du verwendest.

            Irgendein Update gemacht?

            W 1 Reply Last reply Reply Quote 0
            • W
              WolfgangFB @sigi234 last edited by

              @sigi234 sagte in Javascript startet nicht (unsinnige Fehlermeldung):

              @wolfgangfb sagte in Javascript startet nicht (unsinnige Fehlermeldung):

              @sigi234

              Das Skript habe ich mehrmals gestoppt und wieder gestartet, das Ergebnis bleibt gleich. Was meinst Du mit "stell das ganze mal ein"?

              Das komplette Skript

              Gerne, aber da die sinnlose Zeile "bla" überhaupt nicht beachtet wird gehe ich davon aus, dass irgendwas nicht aktualisiert wird. "Natürlich" startet das Skript auch dann nicht, wenn ich die Zeile "bla" auskommentiere.

              console.log('Skript start');
              bla  
              var fs = require('fs');  
              var VerzeichnisDaten = '/opt/iobroker/Wolfgang/Verbrauch/Heizung/';
              const LastValFn = VerzeichnisDaten + 'lastval.txt';
              const DatenpunktEnergie = 'alias.0.Raum.Technik.Energy.0.state';
              const DatenpunktVerbrauchHeute = 'javascript.0.Verbrauch.Heizung.Heute';
              const DatenpunktVerbrauchGestern = 'javascript.0.Verbrauch.Heizung.Gestern';
              const DatenpunktZaehlerstandOffiziell = 'javascript.0.Verbrauch.Heizung.ZaehlerstandOffiziell';
              const DatenpunktZaehlerstandZwischenzaehler = 'javascript.0.Verbrauch.Heizung.ZaehlerstandZwischenzaehler';
              const CrLf = String.fromCharCode(13) + String.fromCharCode(10);
              const ZaehlerDifferenz = 23976.15 - 89.24;
              //fs.writeFileSync(LastValFn, '0'); 
              var ZaehlerstandOffiziellkWh; 
              var FileInhalt = fs.readFileSync(LastValFn);
              //var gg = toString(5);
              ZaehlerstandOffiziellkWh = toFloat(FileInhalt);
              
              var test = ZaehlerstandOffiziellkWh + 5; 
              console.log('test: ' + test);
              
              console.log('***' + ZaehlerstandOffiziellkWh);
              fs.exists(LastValFn, function(exists){
                  console.log('Datei existiert');   
              
              console.log(LastValFn); 
              if (fs.existsSync(LastValFn)){console.log('not exist')} else {console.log('exist')}; 
              //fs.appendFileSync(Fn, 'Waermepumpe' + CrLf);  
              console.log('fff');
              
              function precisionRound(number, precision) {
                var factor = Math.pow(10, precision);
                return Math.round(number * factor) / factor;
              }
              
              var TagesverbrauchkWh = getState(DatenpunktVerbrauchHeute).val; // kWh
              var AnfangswertESPVerbrauchWh = getState(DatenpunktEnergie).val; // Wh
              var AktuelleZeit = (new Date().getTime()); 
              var SkriptStartTagText = formatDate(AktuelleZeit, 'DD');
              var SkriptStartStundeText = formatDate(AktuelleZeit, 'hh'); 
              
              on({id: DatenpunktEnergie, change: 'any'}, function (obj) {
                  var AktuelleZeit = (new Date().getTime()); 
                  var AktuelleZeitText = formatDate(AktuelleZeit, 'DD.MM hh.mm.ss');
                  var AktuellerTagText = formatDate(AktuelleZeit, 'DD');
                  var AktuelleStundeText = formatDate(AktuelleZeit, 'hh');
                  var AktuellesDatum = formatDate(AktuelleZeit, 'DD.MM.YYYY');
              
                  var VerbrauchWH = obj.state.val;
                  var ZuwachsWh = VerbrauchWH - AnfangswertESPVerbrauchWh;
                  var ZuwachskWh = ZuwachsWh / 1000; 
              
                  AnfangswertESPVerbrauchWh = VerbrauchWH;
                  TagesverbrauchkWh = TagesverbrauchkWh + ZuwachskWh;
                  ZaehlerstandOffiziellkWh = ZaehlerstandOffiziellkWh + ZuwachskWh;
                  var ZaehlerstandZwischenzaehlerkWh = ZaehlerstandOffiziellkWh - + ZaehlerDifferenz;
                  console.log('ZS ' + ZaehlerstandOffiziellkWh);
                  fs.writeFileSync(LastValFn, ZaehlerstandOffiziellkWh);
                  setState(DatenpunktVerbrauchHeute, TagesverbrauchkWh);
                  setState(DatenpunktZaehlerstandOffiziell, ZaehlerstandOffiziellkWh);
                  setState(DatenpunktZaehlerstandZwischenzaehler, ZaehlerstandZwischenzaehlerkWh);
              
                  if (AktuellerTagText != SkriptStartTagText){ // neuer Tag beginnt
                      var TagesDatei = VerzeichnisDaten + AktuellesDatum + '.txt';
                      fs.writeFileSync(TagesDatei, ZaehlerstandOffiziellkWh); 
                  
                      setState(DatenpunktVerbrauchGestern, TagesverbrauchkWh);
                      TagesverbrauchkWh = 0;
                      setState(DatenpunktVerbrauchHeute, TagesverbrauchkWh);
                      SkriptStartTagText = AktuellerTagText;
                      }
                  
                  });
              

              Fehler bleibt bei:

              13:04:00.541	error	javascript.0 (17388) script.js.Verbrauch.Heizung compile failed: at script.js.Verbrauch.Heizung:77
              
              sigi234 paul53 2 Replies Last reply Reply Quote 0
              • sigi234
                sigi234 Forum Testing Most Active @WolfgangFB last edited by sigi234

                @wolfgangfb

                Vielleicht kann sich das mal @paul53 ansehen, er ist der Profi.

                Verate uns noch mehr von deinen System! JS Version usw...

                1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 @WolfgangFB last edited by paul53

                  @wolfgangfb sagte: Fehler bleibt bei:

                  Welche Version des JS-Adapters? Sind globale Skripte aktiv?
                  Außer der falschen Zeile 2 kann ich nichts entdecken. Sind im Tab "Protokolle" weitere Informationen vorhanden?

                  1 Reply Last reply Reply Quote 0
                  • dslraser
                    dslraser Forum Testing Most Active @WolfgangFB last edited by

                    @wolfgangfb

                    hier gibt es sowas Ähnliches und eine Vermutung ...(hast Du auch diese JS-Adapter Version ?)

                    https://forum.iobroker.net/topic/53655/warn-mit-javascript-5-5-0

                    1 Reply Last reply Reply Quote 0
                    • F
                      fastfoot last edited by

                      in der letzten Zeile(74) fehlt })

                      1 Reply Last reply Reply Quote 0
                      • W
                        WolfgangFB last edited by

                        @fastfoot

                        Ich habe mal alles bis auf die erste Zeile gelöscht und siehe da, das Skript läuft. Dann Zeile für Zeile das Skript wieder gefüllt und siehe da, an dieser Stelle scheint es zu hängen:

                        fs.exists(LastValFn, function(exists){
                            console.log('Datei existiert');   
                        
                        

                        Es kommt wieder die Fehlermeldung, dass in 4 Zeilen hinter dem Ende etwas nicht stimmt und das Wort "exists" ist im Editor durchgestrichen (was auch immer das bedeuten mag).

                        heizung.jpg

                        1 Reply Last reply Reply Quote 0
                        • AlCalzone
                          AlCalzone Developer last edited by AlCalzone

                          Also wenn ich obiges Skript ausführe steht im ioBroker Log (nicht dem unter dem Skript-Editor) folgendes:

                          2022-03-23 14:04:23.754 - error: javascript.0 (2080) script.js.Skript_1 compile failed:
                          at script.js.Skript_1:152
                          2022-03-23 14:04:23.754 - error: javascript.0 (2080) SyntaxError: Unexpected end of input
                          2022-03-23 14:04:23.754 - error: javascript.0 (2080) at new Script (node:vm:100:7)
                          2022-03-23 14:04:23.754 - error: javascript.0 (2080) at Object.createScript (node:vm:257:10)
                          2022-03-23 14:04:23.754 - error: javascript.0 (2080) at createVM (C:\iobroker\node_modules\iobroker.javascript\main.js:1598:28)
                          2022-03-23 14:04:23.754 - error: javascript.0 (2080) at prepareScript (C:\iobroker\node_modules\iobroker.javascript\main.js:1849:37)
                          2022-03-23 14:04:23.754 - error: javascript.0 (2080) at C:\iobroker\node_modules\iobroker.javascript\main.js:1950:17
                          2022-03-23 14:04:23.755 - error: javascript.0 (2080) at Immediate._onImmediate (C:\iobroker\node_modules\iobroker.javascript\main.js:1423:17)
                          2022-03-23 14:04:23.755 - error: javascript.0 (2080) at processImmediate (node:internal/timers:466:21)
                          

                          Unexpected end of input

                          Klingt für mich als wäre fastfoot auf dem richtigen Weg. Das sieht man auch schön wenn man mal ordentlich formatiert, dass das Skript "eingezogen" endet:
                          a0773c99-022b-46b4-b8c2-b9b880b17cd6-grafik.png
                          4bc58b8f-9d62-4b9e-b49d-24aead4daec8-grafik.png

                          Füge ich am Ende }); ein, kommt eine andere (erwartete) Fehlermeldung:

                          script.js.Skript_1: ReferenceError: bla is not defined

                          1 Reply Last reply Reply Quote 0
                          • arteck
                            arteck Developer Most Active last edited by

                            @wolfgangfb hast du globale Scripte.. dann ist da dein Fehler.. deshalb der Fehler in zeile 77... die glbalen scripte werden zuerst in jedes Script gehangen.. und deshalb kommt der nicht zu deinem bla hin

                            1 Reply Last reply Reply Quote 0
                            • W
                              WolfgangFB last edited by

                              @arteck

                              Nein, ich hatte (bisher) keine globalen Skripte, wusste ehrlich gesagt gar nicht, dass es die gibt, habe aber schon länger nach so etwas gesucht 🙂
                              Ich habe jetzt mal danach gegoogelt und gelesen, dass es eigentlich immer die Ordner "common" und "global" geben sollte. Bei mir existieren die aber nicht. Mit "Neu" tauschen aber "common" und "global" auf. Bisher sind all meine Skripte entweder im Root Verzeichnis oder in darin angelegten Unterordnern.
                              Ist es sinnvoll, die Skripte alle in Common oder global zu haben?

                              Homoran W 2 Replies Last reply Reply Quote 0
                              • Homoran
                                Homoran Global Moderator Administrators @WolfgangFB last edited by

                                @wolfgangfb sagte in Javascript startet nicht (unsinnige Fehlermeldung):

                                Ist es sinnvoll, die Skripte alle in Common oder global zu haben?

                                nein!
                                nur nicht in global, außer du weißt ganz genau was du tust.
                                Deswegen ist der Ordner auch nur im Expertenmodus zu sehen

                                1 Reply Last reply Reply Quote 0
                                • W
                                  WolfgangFB @WolfgangFB last edited by

                                  @wolfgangfb

                                  Ich habe mir gedacht, dass ich in "global" Funktionen haben könnte, die ich eigentlich fast immer brauche und deshalb in fast jedem Skript händisch vorne angelegt habe (z.B. Logfunktionen, Stringfunktionen etc.)
                                  Werden die globalen Skripte dann wirklich jedem anderen Skript vorangestellt oder nur dann wenn die Funktion auch aufgerufen wird?

                                  Homoran 1 Reply Last reply Reply Quote 0
                                  • Homoran
                                    Homoran Global Moderator Administrators @WolfgangFB last edited by

                                    @wolfgangfb sagte in Javascript startet nicht (unsinnige Fehlermeldung):

                                    wirklich jedem anderen Skript vorangestellt

                                    ja

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

                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate
                                    FAQ Cloud / IOT
                                    HowTo: Node.js-Update
                                    HowTo: Backup/Restore
                                    Downloads
                                    BLOG

                                    729
                                    Online

                                    32.0k
                                    Users

                                    80.4k
                                    Topics

                                    1.3m
                                    Posts

                                    8
                                    16
                                    417
                                    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