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. [Gelöst]Fehler abfangen, aber wie richtig?

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.9k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    908

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

[Gelöst]Fehler abfangen, aber wie richtig?

Geplant Angeheftet Gesperrt Verschoben JavaScript
22 Beiträge 5 Kommentatoren 1.8k Aufrufe 6 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.
  • XenonX Xenon

    @fastfoot poste mal die die Funktion

    F Offline
    F Offline
    fastfoot
    schrieb am zuletzt editiert von
    #5

    @xenon sagte in Fehler abfangen, aber wie richtig?:

    @fastfoot poste mal die die Funktion

    Der Fehler wird hier schon abgefangen, try/catch ist nur da um zu demonstrieren dass es hier nicht funktioniert. Der Rest der Funktion kann auskommentiert werden, um zu sehen dass der Fehler durch fs.createWriteStream erzeugt wird.
    Die url speziell erfordert: Die Datei /etc/ssl/openssl.cnf muss in der letzten Zeile auf CipherString = DEFAULT@SECLEVEL=1 eingestellt sein.
    siehe hier für das kmpl. Skript:https://forum.iobroker.net/topic/36632/corona-ampel-österreich-in-vis-anzeigen/173

    const axios = require('axios').default;                 // In der JS-Instanz unter Module eintragen
    const csvjson = require('csvjson');                     // In der JS-Instanz unter Module eintragen
    const fs = require('fs');
    const Path = require('path');
    const fileName = 'CovidFaelle_Timeline_GKZ.csv';        // Dateiname
    const filePath = '/opt/iobroker/iobroker-data/files/Downloads';   // Dateipfad
    
    // download and save csv file
    async function getCSVFile (url) {  
        let writer;
    
        if(!fs.existsSync(filePath)) return log('Dateipfad existiert nicht!','error');
    
        //try/catch nützt hier nichts wenn filePath nicht existiert!
        try{
            writer = fs.createWriteStream(Path.resolve(filePath, '', fileName));
        }catch {
            log('Fehler');
        }
    
        const response = await axios({
            url: url,
            method: 'GET',
            responseType: 'stream'
        })
        response.data.pipe(writer);
    
        return new Promise((resolve, reject) => {
            writer.on('finish', resolve)
            writer.on('error', reject)
        })
    }
    
    async function main(){
        const url = 'https://covid19-dashboard.ages.at/data/CovidFaelle_Timeline_GKZ.csv';
        await getCSVFile(url);
    
    }
    
    main();
    

    iobroker läuft unter Docker auf QNAP TS-451+
    SkriptRecovery: https://forum.iobroker.net/post/930558

    XenonX 1 Antwort Letzte Antwort
    0
    • F fastfoot

      @xenon sagte in Fehler abfangen, aber wie richtig?:

      @fastfoot poste mal die die Funktion

      Der Fehler wird hier schon abgefangen, try/catch ist nur da um zu demonstrieren dass es hier nicht funktioniert. Der Rest der Funktion kann auskommentiert werden, um zu sehen dass der Fehler durch fs.createWriteStream erzeugt wird.
      Die url speziell erfordert: Die Datei /etc/ssl/openssl.cnf muss in der letzten Zeile auf CipherString = DEFAULT@SECLEVEL=1 eingestellt sein.
      siehe hier für das kmpl. Skript:https://forum.iobroker.net/topic/36632/corona-ampel-österreich-in-vis-anzeigen/173

      const axios = require('axios').default;                 // In der JS-Instanz unter Module eintragen
      const csvjson = require('csvjson');                     // In der JS-Instanz unter Module eintragen
      const fs = require('fs');
      const Path = require('path');
      const fileName = 'CovidFaelle_Timeline_GKZ.csv';        // Dateiname
      const filePath = '/opt/iobroker/iobroker-data/files/Downloads';   // Dateipfad
      
      // download and save csv file
      async function getCSVFile (url) {  
          let writer;
      
          if(!fs.existsSync(filePath)) return log('Dateipfad existiert nicht!','error');
      
          //try/catch nützt hier nichts wenn filePath nicht existiert!
          try{
              writer = fs.createWriteStream(Path.resolve(filePath, '', fileName));
          }catch {
              log('Fehler');
          }
      
          const response = await axios({
              url: url,
              method: 'GET',
              responseType: 'stream'
          })
          response.data.pipe(writer);
      
          return new Promise((resolve, reject) => {
              writer.on('finish', resolve)
              writer.on('error', reject)
          })
      }
      
      async function main(){
          const url = 'https://covid19-dashboard.ages.at/data/CovidFaelle_Timeline_GKZ.csv';
          await getCSVFile(url);
      
      }
      
      main();
      
      XenonX Offline
      XenonX Offline
      Xenon
      Forum Testing Developer
      schrieb am zuletzt editiert von Xenon
      #6

      @fastfoot ähm "catch log(" fehler")?"

      müsste da nicht console.log oder console.info stehen?

      Bzw catch(e) {
      console.warn(e)
      };

      wenn euch mein Beitrag geholfen hat, bewertet ihn bitte unten rechts :)

      F 1 Antwort Letzte Antwort
      0
      • XenonX Xenon

        @fastfoot ähm "catch log(" fehler")?"

        müsste da nicht console.log oder console.info stehen?

        Bzw catch(e) {
        console.warn(e)
        };

        F Offline
        F Offline
        fastfoot
        schrieb am zuletzt editiert von
        #7

        @xenon sagte in Fehler abfangen, aber wie richtig?:

        @fastfoot ähm "catch log(" fehler")?"

        müsste da nicht console.log oder console.info stehen?

        Bzw catch(e) {
        console.warn(e)
        };

        nein, ist aber unerheblich weil der Adapter bei falschem Pfad abstürzt und gar nicht dahin kommt :-) Das ist kein Adaptercode, da muss glaube ich console.log() stehen

        iobroker läuft unter Docker auf QNAP TS-451+
        SkriptRecovery: https://forum.iobroker.net/post/930558

        XenonX 1 Antwort Letzte Antwort
        0
        • F fastfoot

          @xenon sagte in Fehler abfangen, aber wie richtig?:

          @fastfoot ähm "catch log(" fehler")?"

          müsste da nicht console.log oder console.info stehen?

          Bzw catch(e) {
          console.warn(e)
          };

          nein, ist aber unerheblich weil der Adapter bei falschem Pfad abstürzt und gar nicht dahin kommt :-) Das ist kein Adaptercode, da muss glaube ich console.log() stehen

          XenonX Offline
          XenonX Offline
          Xenon
          Forum Testing Developer
          schrieb am zuletzt editiert von
          #8

          @fastfoot reden wir jetzt von einem eigenen Adapter oder vom js Adapter?

          wenn euch mein Beitrag geholfen hat, bewertet ihn bitte unten rechts :)

          F 1 Antwort Letzte Antwort
          0
          • XenonX Xenon

            @fastfoot reden wir jetzt von einem eigenen Adapter oder vom js Adapter?

            F Offline
            F Offline
            fastfoot
            schrieb am zuletzt editiert von
            #9

            @xenon sagte in Fehler abfangen, aber wie richtig?:

            @fastfoot reden wir jetzt von einem eigenen Adapter oder vom js Adapter?

            wir reden von einem normalen Skript, welches bei falschem Pfad den Adapter abstürzen lässt. Ein try/catch hilft nicht dagegen und ich wollte wissen warum

            iobroker läuft unter Docker auf QNAP TS-451+
            SkriptRecovery: https://forum.iobroker.net/post/930558

            XenonX 1 Antwort Letzte Antwort
            0
            • F fastfoot

              @xenon sagte in Fehler abfangen, aber wie richtig?:

              @fastfoot reden wir jetzt von einem eigenen Adapter oder vom js Adapter?

              wir reden von einem normalen Skript, welches bei falschem Pfad den Adapter abstürzen lässt. Ein try/catch hilft nicht dagegen und ich wollte wissen warum

              XenonX Offline
              XenonX Offline
              Xenon
              Forum Testing Developer
              schrieb am zuletzt editiert von
              #10

              @fastfoot müsste ich morgen mal ausprobieren

              wenn euch mein Beitrag geholfen hat, bewertet ihn bitte unten rechts :)

              F 1 Antwort Letzte Antwort
              0
              • XenonX Xenon

                @fastfoot müsste ich morgen mal ausprobieren

                F Offline
                F Offline
                fastfoot
                schrieb am zuletzt editiert von
                #11

                @xenon sagte in Fehler abfangen, aber wie richtig?:

                @fastfoot müsste ich morgen mal ausprobieren

                probiert habe ich ja schon, ich hatte gehofft ein JS guru hier wüsste warum das nicht abgefangen wird. Und eine Lösung habe ich ja auch, würde aber gerne aus einer Antwort lernen können :-) DAnke fürs Anschauen

                iobroker läuft unter Docker auf QNAP TS-451+
                SkriptRecovery: https://forum.iobroker.net/post/930558

                M 1 Antwort Letzte Antwort
                0
                • F fastfoot

                  @xenon sagte in Fehler abfangen, aber wie richtig?:

                  @fastfoot müsste ich morgen mal ausprobieren

                  probiert habe ich ja schon, ich hatte gehofft ein JS guru hier wüsste warum das nicht abgefangen wird. Und eine Lösung habe ich ja auch, würde aber gerne aus einer Antwort lernen können :-) DAnke fürs Anschauen

                  M Online
                  M Online
                  MCU
                  schrieb am zuletzt editiert von
                  #12

                  @fastfoot Dann mach ein Issue im javascript-Adapter auf:
                  https://github.com/ioBroker/ioBroker.javascript/issues

                  NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
                  Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

                  F 1 Antwort Letzte Antwort
                  0
                  • M MCU

                    @fastfoot Dann mach ein Issue im javascript-Adapter auf:
                    https://github.com/ioBroker/ioBroker.javascript/issues

                    F Offline
                    F Offline
                    fastfoot
                    schrieb am zuletzt editiert von
                    #13

                    @mcu sagte in Fehler abfangen, aber wie richtig?:

                    @fastfoot Dann mach ein Issue im javascript-Adapter auf:
                    https://github.com/ioBroker/ioBroker.javascript/issues

                    ähem, nein! Ich denke es ist/war mein Fehler, zu denken dass try/catch einen solchen Fehler abfängt. Ich hätte nur gerne eine Erklärung dazu gehabt warum das nicht funktioniert(funktionieren kann). der Fehler wird ja eigentlich im fs Modul nicht abgefangen und ich glaube nicht dass der JS-Adapter da noch viel tun kann.

                    iobroker läuft unter Docker auf QNAP TS-451+
                    SkriptRecovery: https://forum.iobroker.net/post/930558

                    OliverIOO 1 Antwort Letzte Antwort
                    0
                    • F fastfoot

                      @mcu sagte in Fehler abfangen, aber wie richtig?:

                      @fastfoot Dann mach ein Issue im javascript-Adapter auf:
                      https://github.com/ioBroker/ioBroker.javascript/issues

                      ähem, nein! Ich denke es ist/war mein Fehler, zu denken dass try/catch einen solchen Fehler abfängt. Ich hätte nur gerne eine Erklärung dazu gehabt warum das nicht funktioniert(funktionieren kann). der Fehler wird ja eigentlich im fs Modul nicht abgefangen und ich glaube nicht dass der JS-Adapter da noch viel tun kann.

                      OliverIOO Offline
                      OliverIOO Offline
                      OliverIO
                      schrieb am zuletzt editiert von OliverIO
                      #14

                      @fastfoot

                      das Problem ist nicht der Befehl createWriteStream sondern der axios Befehl danach.
                      Verschiebe ich den Befehl auch in den try-block dann erscheint im log auch der Fehler

                      wenn man dann noch an catch den error parameter übergibt und den über das log ausgibt, dann erscheint folgendes:

                      javascript.0 (22209) script.js.Test.Skript_1: {'message':'write EPROTO 140638061451136:error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small:../deps/openssl/openssl/ssl/statem/statem_clnt.c:2158:\n','name':'Error','stack':'Error: write EPROTO 140638061451136:error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small:../deps/openssl/openssl/ssl/statem/statem_clnt.c:2158:\n\n at WriteWrap.onWriteComplete [as oncomplete] (internal/stream_base_commons.js:94:16)','config':{'url':'https://covid19-dashboard.ages.at/data/CovidFaelle_Timeline_GKZ.csv','method':'get','headers':{'Accept':'application/json, text/plain, */*','User-Agent':'axios/0.21.1'},'transformRequest':[null],'transformResponse':[null],'timeout':0,'responseType':'stream','xsrfCookieName':'XSRF-TOKEN','xsrfHeaderName':'X-XSRF-TOKEN','maxContentLength':-1,'maxBodyLength':-1},'code':'EPROTO'}
                      

                      der server hat wohl ein problem mit der ssl konfiguration. da muss man bei axios wohl noch den ein oder anderen parameter mit angeben, damit die prüfung ausgeschaltet wird.

                      weiß nicht genau was du vorhast.
                      aber wahrscheinlich könntest du dir es einfacher machen direkt über die json daten zu gehen und nicht erst das csv runter zu laden, das einzulesen und daraus die richtigen daten identifizieren.

                      https://covid19-dashboard.ages.at/data/JsonData.json

                      die daten sehen ganz gut strukturiert aus

                      59735ce7-4a7f-4898-a8ca-6c63c6fdaf2d-image.png

                      Meine Adapter und Widgets
                      TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                      Links im Profil

                      XenonX F 2 Antworten Letzte Antwort
                      0
                      • OliverIOO OliverIO

                        @fastfoot

                        das Problem ist nicht der Befehl createWriteStream sondern der axios Befehl danach.
                        Verschiebe ich den Befehl auch in den try-block dann erscheint im log auch der Fehler

                        wenn man dann noch an catch den error parameter übergibt und den über das log ausgibt, dann erscheint folgendes:

                        javascript.0 (22209) script.js.Test.Skript_1: {'message':'write EPROTO 140638061451136:error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small:../deps/openssl/openssl/ssl/statem/statem_clnt.c:2158:\n','name':'Error','stack':'Error: write EPROTO 140638061451136:error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small:../deps/openssl/openssl/ssl/statem/statem_clnt.c:2158:\n\n at WriteWrap.onWriteComplete [as oncomplete] (internal/stream_base_commons.js:94:16)','config':{'url':'https://covid19-dashboard.ages.at/data/CovidFaelle_Timeline_GKZ.csv','method':'get','headers':{'Accept':'application/json, text/plain, */*','User-Agent':'axios/0.21.1'},'transformRequest':[null],'transformResponse':[null],'timeout':0,'responseType':'stream','xsrfCookieName':'XSRF-TOKEN','xsrfHeaderName':'X-XSRF-TOKEN','maxContentLength':-1,'maxBodyLength':-1},'code':'EPROTO'}
                        

                        der server hat wohl ein problem mit der ssl konfiguration. da muss man bei axios wohl noch den ein oder anderen parameter mit angeben, damit die prüfung ausgeschaltet wird.

                        weiß nicht genau was du vorhast.
                        aber wahrscheinlich könntest du dir es einfacher machen direkt über die json daten zu gehen und nicht erst das csv runter zu laden, das einzulesen und daraus die richtigen daten identifizieren.

                        https://covid19-dashboard.ages.at/data/JsonData.json

                        die daten sehen ganz gut strukturiert aus

                        59735ce7-4a7f-4898-a8ca-6c63c6fdaf2d-image.png

                        XenonX Offline
                        XenonX Offline
                        Xenon
                        Forum Testing Developer
                        schrieb am zuletzt editiert von Xenon
                        #15

                        @oliverio hatte es auch grade getestet, komme zum gleichen Ergebnis
                        @fastfoot Das was da das Ziel ist, kann das nicht der corona Adapter vom dutch bereits?

                        wenn euch mein Beitrag geholfen hat, bewertet ihn bitte unten rechts :)

                        LatziL F 2 Antworten Letzte Antwort
                        0
                        • XenonX Xenon

                          @oliverio hatte es auch grade getestet, komme zum gleichen Ergebnis
                          @fastfoot Das was da das Ziel ist, kann das nicht der corona Adapter vom dutch bereits?

                          LatziL Online
                          LatziL Online
                          Latzi
                          schrieb am zuletzt editiert von
                          #16

                          @xenon sagte in Fehler abfangen, aber wie richtig?:

                          kann das nicht der corona Adapter vom dutch bereits?

                          nein, leider nicht auf Bezirks-/Bundeslandebene für Österreich :-(

                          F 1 Antwort Letzte Antwort
                          0
                          • OliverIOO OliverIO

                            @fastfoot

                            das Problem ist nicht der Befehl createWriteStream sondern der axios Befehl danach.
                            Verschiebe ich den Befehl auch in den try-block dann erscheint im log auch der Fehler

                            wenn man dann noch an catch den error parameter übergibt und den über das log ausgibt, dann erscheint folgendes:

                            javascript.0 (22209) script.js.Test.Skript_1: {'message':'write EPROTO 140638061451136:error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small:../deps/openssl/openssl/ssl/statem/statem_clnt.c:2158:\n','name':'Error','stack':'Error: write EPROTO 140638061451136:error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small:../deps/openssl/openssl/ssl/statem/statem_clnt.c:2158:\n\n at WriteWrap.onWriteComplete [as oncomplete] (internal/stream_base_commons.js:94:16)','config':{'url':'https://covid19-dashboard.ages.at/data/CovidFaelle_Timeline_GKZ.csv','method':'get','headers':{'Accept':'application/json, text/plain, */*','User-Agent':'axios/0.21.1'},'transformRequest':[null],'transformResponse':[null],'timeout':0,'responseType':'stream','xsrfCookieName':'XSRF-TOKEN','xsrfHeaderName':'X-XSRF-TOKEN','maxContentLength':-1,'maxBodyLength':-1},'code':'EPROTO'}
                            

                            der server hat wohl ein problem mit der ssl konfiguration. da muss man bei axios wohl noch den ein oder anderen parameter mit angeben, damit die prüfung ausgeschaltet wird.

                            weiß nicht genau was du vorhast.
                            aber wahrscheinlich könntest du dir es einfacher machen direkt über die json daten zu gehen und nicht erst das csv runter zu laden, das einzulesen und daraus die richtigen daten identifizieren.

                            https://covid19-dashboard.ages.at/data/JsonData.json

                            die daten sehen ganz gut strukturiert aus

                            59735ce7-4a7f-4898-a8ca-6c63c6fdaf2d-image.png

                            F Offline
                            F Offline
                            fastfoot
                            schrieb am zuletzt editiert von
                            #17

                            @oliverio sagte in Fehler abfangen, aber wie richtig?:

                            das Problem ist nicht der Befehl createWriteStream sondern der axios Befehl danach.

                            Danke für den ausführlichen Kommentar. Aber hast du mal einen falschen Dateipfad angegeben? Da zeigt sich doch erst der Absturz von dem ich rede(Adapter-Neustart). Das in deinem Log gezeigte SSL-Problem hatte ich auch beschrieben und wie es derzeit behoben werden kann, aber es lässt den Adapter ja nicht neu starten

                            iobroker läuft unter Docker auf QNAP TS-451+
                            SkriptRecovery: https://forum.iobroker.net/post/930558

                            OliverIOO 1 Antwort Letzte Antwort
                            0
                            • XenonX Xenon

                              @oliverio hatte es auch grade getestet, komme zum gleichen Ergebnis
                              @fastfoot Das was da das Ziel ist, kann das nicht der corona Adapter vom dutch bereits?

                              F Offline
                              F Offline
                              fastfoot
                              schrieb am zuletzt editiert von
                              #18

                              @xenon sagte in Fehler abfangen, aber wie richtig?:

                              @oliverio hatte es auch grade getestet, komme zum gleichen Ergebnis

                              siehe meinen anderen Post. Ihr habt beide nicht versucht meinen 'Fehler' nachzustellen, obwohl ich es ausführlichst beschrieben habe. Kommentiere einfach alles nach createWritestream aus und auch die Prüfung mit existsSynch, übergib einen fehlenden Pfad und schau wie der Adapter abstürzt. Und dann sage mir bitte warum das try/catch diesen Absturz nicht verhindert oder verhindern kann.

                              @fastfoot Das was da das Ziel ist, kann das nicht der corona Adapter vom dutch bereits?

                              selbst wenn er es könnte, ich habe diese Dinge gerne selbst in der Hand und mir gefällt auch die Art der Datenaufbereitung in einzelne DP nicht, ich mag lieber Tabellen.

                              iobroker läuft unter Docker auf QNAP TS-451+
                              SkriptRecovery: https://forum.iobroker.net/post/930558

                              1 Antwort Letzte Antwort
                              0
                              • LatziL Latzi

                                @xenon sagte in Fehler abfangen, aber wie richtig?:

                                kann das nicht der corona Adapter vom dutch bereits?

                                nein, leider nicht auf Bezirks-/Bundeslandebene für Österreich :-(

                                F Offline
                                F Offline
                                fastfoot
                                schrieb am zuletzt editiert von
                                #19

                                @latzi sagte in Fehler abfangen, aber wie richtig?:

                                @xenon sagte in Fehler abfangen, aber wie richtig?:

                                kann das nicht der corona Adapter vom dutch bereits?

                                nein, leider nicht auf Bezirks-/Bundeslandebene für Österreich :-(

                                Das Skript kann das ja und es gibt auch eine Grafik dazu, muss es denn immer ein Adapter sein?

                                iobroker läuft unter Docker auf QNAP TS-451+
                                SkriptRecovery: https://forum.iobroker.net/post/930558

                                1 Antwort Letzte Antwort
                                0
                                • F fastfoot

                                  @oliverio sagte in Fehler abfangen, aber wie richtig?:

                                  das Problem ist nicht der Befehl createWriteStream sondern der axios Befehl danach.

                                  Danke für den ausführlichen Kommentar. Aber hast du mal einen falschen Dateipfad angegeben? Da zeigt sich doch erst der Absturz von dem ich rede(Adapter-Neustart). Das in deinem Log gezeigte SSL-Problem hatte ich auch beschrieben und wie es derzeit behoben werden kann, aber es lässt den Adapter ja nicht neu starten

                                  OliverIOO Offline
                                  OliverIOO Offline
                                  OliverIO
                                  schrieb am zuletzt editiert von OliverIO
                                  #20

                                  @fastfoot sagte in Fehler abfangen, aber wie richtig?:

                                  @oliverio sagte in Fehler abfangen, aber wie richtig?:

                                  das Problem ist nicht der Befehl createWriteStream sondern der axios Befehl danach.

                                  Danke für den ausführlichen Kommentar. Aber hast du mal einen falschen Dateipfad angegeben? Da zeigt sich doch erst der Absturz von dem ich rede(Adapter-Neustart). Das in deinem Log gezeigte SSL-Problem hatte ich auch beschrieben und wie es derzeit behoben werden kann, aber es lässt den Adapter ja nicht neu starten

                                  also ich habe keinen absturz des adapters, wenn ich den request mit axios und der verarbeitung danach auskommentiere.

                                  allerdings wird auch kein fehler geworfen wenn der pfad nicht existiert.

                                  const axios = require('axios').default;                 // In der JS-Instanz unter Module eintragen
                                  //const csvjson = require('csvjson');                     // In der JS-Instanz unter Module eintragen
                                  const fs = require('fs');
                                  const Path = require('path');
                                  const fileName = 'CovidFaelle_Timeline_GKZ.csv';        // Dateiname
                                  const filePath = '/opt/iobroker/iobroker-data/files/Downloadsx';   // Dateipfad
                                   
                                  // download and save csv file
                                  async function getCSVFile (url) {  
                                      let writer;
                                   
                                      //if(!fs.existsSync(filePath)) return log('Dateipfad existiert nicht!','error');
                                      log("1");
                                   
                                      //try/catch nützt hier nichts wenn filePath nicht existiert!
                                      log("2");
                                      try{
                                          log("3");
                                          writer = fs.createWriteStream(Path.resolve(filePath, '', fileName));
                                          log("4");
                                      }catch {
                                          log("5");
                                          log('Fehler');
                                          log("6");
                                      }
                                  log("7");
                                   }
                                  async function main(){
                                      const url = 'https://covid19-dashboard.ages.at/data/CovidFaelle_Timeline_GKZ.csv';
                                      await getCSVFile(url);
                                   }
                                   main();
                                  
                                  

                                  log sollte 1 2 3 4 7 ausgeben
                                  Gleiches Ergebnis ob Pfad existiert oder nicht

                                  über zeile 12 fragst du ja ab, ob der pfad existiert und beendest dann. das habe ich für den test mal auskommentiert

                                  das fs.createWriteStream keinen fehler wirft, hängt evtl. mit der fehlerbehandlungs strategie des moduls ab.

                                  fehler werden da normalerweise über ein error-event abgefangen
                                  https://nodejs.org/api/fs.html#fs_event_error

                                  allerdings wird der fehler auch mit folgender code ergänzung geworfen, weil wahrscheinlich es da bereits vorbei ist.

                                  writer.on('error', function(err) {
                                      log(err);
                                      writer.end();
                                  });
                                  
                                  

                                  Einen Fehler darauf findest du hier. Auch wie alternativ der Fehler dann abgefangen werden kann. Im Text wird von Berechtigungsproblemen geschrieben, aber da kannst du es mal probieren.
                                  Aber wie gesagt, mit Zeile 12 ist zumindest das Problem ob Pfad existiert oder nicht ja abgefragt.

                                  https://stackoverflow.com/questions/43293921/cant-catch-exception-from-fs-createwritestream/43303770

                                  Meine Adapter und Widgets
                                  TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                                  Links im Profil

                                  F 1 Antwort Letzte Antwort
                                  1
                                  • OliverIOO OliverIO

                                    @fastfoot sagte in Fehler abfangen, aber wie richtig?:

                                    @oliverio sagte in Fehler abfangen, aber wie richtig?:

                                    das Problem ist nicht der Befehl createWriteStream sondern der axios Befehl danach.

                                    Danke für den ausführlichen Kommentar. Aber hast du mal einen falschen Dateipfad angegeben? Da zeigt sich doch erst der Absturz von dem ich rede(Adapter-Neustart). Das in deinem Log gezeigte SSL-Problem hatte ich auch beschrieben und wie es derzeit behoben werden kann, aber es lässt den Adapter ja nicht neu starten

                                    also ich habe keinen absturz des adapters, wenn ich den request mit axios und der verarbeitung danach auskommentiere.

                                    allerdings wird auch kein fehler geworfen wenn der pfad nicht existiert.

                                    const axios = require('axios').default;                 // In der JS-Instanz unter Module eintragen
                                    //const csvjson = require('csvjson');                     // In der JS-Instanz unter Module eintragen
                                    const fs = require('fs');
                                    const Path = require('path');
                                    const fileName = 'CovidFaelle_Timeline_GKZ.csv';        // Dateiname
                                    const filePath = '/opt/iobroker/iobroker-data/files/Downloadsx';   // Dateipfad
                                     
                                    // download and save csv file
                                    async function getCSVFile (url) {  
                                        let writer;
                                     
                                        //if(!fs.existsSync(filePath)) return log('Dateipfad existiert nicht!','error');
                                        log("1");
                                     
                                        //try/catch nützt hier nichts wenn filePath nicht existiert!
                                        log("2");
                                        try{
                                            log("3");
                                            writer = fs.createWriteStream(Path.resolve(filePath, '', fileName));
                                            log("4");
                                        }catch {
                                            log("5");
                                            log('Fehler');
                                            log("6");
                                        }
                                    log("7");
                                     }
                                    async function main(){
                                        const url = 'https://covid19-dashboard.ages.at/data/CovidFaelle_Timeline_GKZ.csv';
                                        await getCSVFile(url);
                                     }
                                     main();
                                    
                                    

                                    log sollte 1 2 3 4 7 ausgeben
                                    Gleiches Ergebnis ob Pfad existiert oder nicht

                                    über zeile 12 fragst du ja ab, ob der pfad existiert und beendest dann. das habe ich für den test mal auskommentiert

                                    das fs.createWriteStream keinen fehler wirft, hängt evtl. mit der fehlerbehandlungs strategie des moduls ab.

                                    fehler werden da normalerweise über ein error-event abgefangen
                                    https://nodejs.org/api/fs.html#fs_event_error

                                    allerdings wird der fehler auch mit folgender code ergänzung geworfen, weil wahrscheinlich es da bereits vorbei ist.

                                    writer.on('error', function(err) {
                                        log(err);
                                        writer.end();
                                    });
                                    
                                    

                                    Einen Fehler darauf findest du hier. Auch wie alternativ der Fehler dann abgefangen werden kann. Im Text wird von Berechtigungsproblemen geschrieben, aber da kannst du es mal probieren.
                                    Aber wie gesagt, mit Zeile 12 ist zumindest das Problem ob Pfad existiert oder nicht ja abgefragt.

                                    https://stackoverflow.com/questions/43293921/cant-catch-exception-from-fs-createwritestream/43303770

                                    F Offline
                                    F Offline
                                    fastfoot
                                    schrieb am zuletzt editiert von
                                    #21

                                    @oliverio sagte in Fehler abfangen, aber wie richtig?:

                                    @fastfoot sagte in Fehler abfangen, aber wie richtig?:

                                    @oliverio sagte in Fehler abfangen, aber wie richtig?:

                                    also ich habe keinen absturz des adapters, wenn ich den request mit axios und der verarbeitung danach auskommentiere.

                                    allerdings wird auch kein fehler geworfen wenn der pfad nicht existiert.

                                    Das genau ist bei mir anders. Der Code wie von dir gepostet spiegelt exakt mein 'Problem', er lässt bei mir den Adapter abstürzen. Die Log-Ausgabe stimmt mit deiner überein, wie mein Log zeigt in beiden Fällen. Ich habe die aktuellsten Betas installiert, allerdings ist der Admin auf 4.2.1. Der obere Teil zeigt die Ausgabe mit korrektem Pfad, in Zeile 17 zeigt es den Restart an

                                    javascript.1	2021-04-27 16:20:50.535	info	(30171) script.js._MeineSkripte._DEV.testCSV: registered 0 subscriptions and 0 schedules
                                    javascript.1	2021-04-27 16:20:50.535	info	(30171) script.js._MeineSkripte._DEV.testCSV: 7
                                    javascript.1	2021-04-27 16:20:50.534	info	(30171) script.js._MeineSkripte._DEV.testCSV: 4
                                    javascript.1	2021-04-27 16:20:50.532	info	(30171) script.js._MeineSkripte._DEV.testCSV: 3
                                    javascript.1	2021-04-27 16:20:50.531	info	(30171) script.js._MeineSkripte._DEV.testCSV: 2
                                    javascript.1	2021-04-27 16:20:50.530	info	(30171) script.js._MeineSkripte._DEV.testCSV: 1
                                    javascript.1	2021-04-27 16:20:50.416	info	(30171) Start javascript script.js._MeineSkripte._DEV.testCSV
                                    javascript.0	2021-04-27 16:20:47.930	info	(222) Stop script script.js._MeineSkripte._DEV.testCSV
                                    javascript.1	2021-04-27 16:20:47.919	info	(30171) Stop script script.js._MeineSkripte._DEV.testCSV
                                    javascript.1	2021-04-27 16:19:41.324	info	(30171) received all states
                                    javascript.1	2021-04-27 16:19:41.299	info	(30171) received all objects
                                    javascript.1	2021-04-27 16:19:37.739	info	(30171) requesting all objects
                                    javascript.1	2021-04-27 16:19:37.737	info	(30171) requesting all states
                                    javascript.1	2021-04-27 16:19:37.605	info	(30171) starting. Version 5.1.3 in /opt/iobroker/node_modules/iobroker.javascript, node: v14.16.1, js-controller: 3.2.16
                                    host.iobroker	2021-04-27 16:19:34.142	info	instance system.adapter.javascript.1 started with pid 30171
                                    host.iobroker	2021-04-27 16:19:04.092	info	Restart adapter system.adapter.javascript.1 because enabled
                                    host.iobroker	2021-04-27 16:19:04.091	error	instance system.adapter.javascript.1 terminated with code 1 (JS_CONTROLLER_STOPPED)
                                    host.iobroker	2021-04-27 16:19:04.090	error	Caught by controller[0]: Error: ENOENT: no such file or directory, open '/opt/iobroker/iobroker-data/files/Downloadsx/CovidFaelle_Timeline_GKZ.csv'
                                    javascript.1	2021-04-27 16:19:03.379	info	(30063) script.js._MeineSkripte._DEV.testCSV: registered 0 subscriptions and 0 schedules
                                    javascript.1	2021-04-27 16:19:03.378	info	(30063) script.js._MeineSkripte._DEV.testCSV: 7
                                    javascript.1	2021-04-27 16:19:03.377	info	(30063) script.js._MeineSkripte._DEV.testCSV: 4
                                    javascript.1	2021-04-27 16:19:03.376	info	(30063) script.js._MeineSkripte._DEV.testCSV: 3
                                    javascript.1	2021-04-27 16:19:03.375	info	(30063) script.js._MeineSkripte._DEV.testCSV: 2
                                    javascript.1	2021-04-27 16:19:03.374	info	(30063) script.js._MeineSkripte._DEV.testCSV: 1
                                    javascript.1	2021-04-27 16:19:03.250	info	(30063) Start javascript script.js._MeineSkripte._DEV.testCSV
                                    

                                    log sollte 1 2 3 4 7 ausgeben
                                    Gleiches Ergebnis ob Pfad existiert oder nicht

                                    über zeile 12 fragst du ja ab, ob der pfad existiert und beendest dann. das habe ich für den test mal auskommentiert

                                    das ist meine aktuelle Lösung und die funktioniert auch, sie steht da aber nur weil try/catch nicht funktionierte. Jetzt verwundert es mich weshalb bei Dir kein Adapter-Restart durchgeführt wird.

                                    das fs.createWriteStream keinen fehler wirft, hängt evtl. mit der fehlerbehandlungs strategie des moduls ab.

                                    fehler werden da normalerweise über ein error-event abgefangen
                                    https://nodejs.org/api/fs.html#fs_event_error

                                    allerdings wird der fehler auch mit folgender code ergänzung geworfen, weil wahrscheinlich es da bereits vorbei ist.

                                    writer.on('error', function(err) {
                                        log(err);
                                        writer.end();
                                    });
                                    
                                    

                                    Einen Fehler darauf findest du hier. Auch wie alternativ der Fehler dann abgefangen werden kann. Im Text wird von Berechtigungsproblemen geschrieben, aber da kannst du es mal probieren.
                                    Aber wie gesagt, mit Zeile 12 ist zumindest das Problem ob Pfad existiert oder nicht ja abgefragt.

                                    https://stackoverflow.com/questions/43293921/cant-catch-exception-from-fs-createwritestream/43303770

                                    die Antwort habe ich nur zu 90% verstanden, die Leute dort programmieren fast alle in höheren Ligen als ich selbst :-) Aber nur so lernt man etwas, mit der Antwort dort kann ich gut leben und mit writer.on('error',xxx) habe ich nochmal etwas dazu gelernt.

                                    Jetzt bleibt nur noch zu prüfen ob der Adapter auf einem Stable System bei mir anders reagiert, das poste ich dann noch der Vollständigkeit halber.

                                    Dir einen großen Dank für Deine Mühe und Geduld! Der Dank gilt natürlich auch für alle Anderen die sich mit dem Problem beschäftigt haben!

                                    iobroker läuft unter Docker auf QNAP TS-451+
                                    SkriptRecovery: https://forum.iobroker.net/post/930558

                                    F 1 Antwort Letzte Antwort
                                    0
                                    • F fastfoot

                                      @oliverio sagte in Fehler abfangen, aber wie richtig?:

                                      @fastfoot sagte in Fehler abfangen, aber wie richtig?:

                                      @oliverio sagte in Fehler abfangen, aber wie richtig?:

                                      also ich habe keinen absturz des adapters, wenn ich den request mit axios und der verarbeitung danach auskommentiere.

                                      allerdings wird auch kein fehler geworfen wenn der pfad nicht existiert.

                                      Das genau ist bei mir anders. Der Code wie von dir gepostet spiegelt exakt mein 'Problem', er lässt bei mir den Adapter abstürzen. Die Log-Ausgabe stimmt mit deiner überein, wie mein Log zeigt in beiden Fällen. Ich habe die aktuellsten Betas installiert, allerdings ist der Admin auf 4.2.1. Der obere Teil zeigt die Ausgabe mit korrektem Pfad, in Zeile 17 zeigt es den Restart an

                                      javascript.1	2021-04-27 16:20:50.535	info	(30171) script.js._MeineSkripte._DEV.testCSV: registered 0 subscriptions and 0 schedules
                                      javascript.1	2021-04-27 16:20:50.535	info	(30171) script.js._MeineSkripte._DEV.testCSV: 7
                                      javascript.1	2021-04-27 16:20:50.534	info	(30171) script.js._MeineSkripte._DEV.testCSV: 4
                                      javascript.1	2021-04-27 16:20:50.532	info	(30171) script.js._MeineSkripte._DEV.testCSV: 3
                                      javascript.1	2021-04-27 16:20:50.531	info	(30171) script.js._MeineSkripte._DEV.testCSV: 2
                                      javascript.1	2021-04-27 16:20:50.530	info	(30171) script.js._MeineSkripte._DEV.testCSV: 1
                                      javascript.1	2021-04-27 16:20:50.416	info	(30171) Start javascript script.js._MeineSkripte._DEV.testCSV
                                      javascript.0	2021-04-27 16:20:47.930	info	(222) Stop script script.js._MeineSkripte._DEV.testCSV
                                      javascript.1	2021-04-27 16:20:47.919	info	(30171) Stop script script.js._MeineSkripte._DEV.testCSV
                                      javascript.1	2021-04-27 16:19:41.324	info	(30171) received all states
                                      javascript.1	2021-04-27 16:19:41.299	info	(30171) received all objects
                                      javascript.1	2021-04-27 16:19:37.739	info	(30171) requesting all objects
                                      javascript.1	2021-04-27 16:19:37.737	info	(30171) requesting all states
                                      javascript.1	2021-04-27 16:19:37.605	info	(30171) starting. Version 5.1.3 in /opt/iobroker/node_modules/iobroker.javascript, node: v14.16.1, js-controller: 3.2.16
                                      host.iobroker	2021-04-27 16:19:34.142	info	instance system.adapter.javascript.1 started with pid 30171
                                      host.iobroker	2021-04-27 16:19:04.092	info	Restart adapter system.adapter.javascript.1 because enabled
                                      host.iobroker	2021-04-27 16:19:04.091	error	instance system.adapter.javascript.1 terminated with code 1 (JS_CONTROLLER_STOPPED)
                                      host.iobroker	2021-04-27 16:19:04.090	error	Caught by controller[0]: Error: ENOENT: no such file or directory, open '/opt/iobroker/iobroker-data/files/Downloadsx/CovidFaelle_Timeline_GKZ.csv'
                                      javascript.1	2021-04-27 16:19:03.379	info	(30063) script.js._MeineSkripte._DEV.testCSV: registered 0 subscriptions and 0 schedules
                                      javascript.1	2021-04-27 16:19:03.378	info	(30063) script.js._MeineSkripte._DEV.testCSV: 7
                                      javascript.1	2021-04-27 16:19:03.377	info	(30063) script.js._MeineSkripte._DEV.testCSV: 4
                                      javascript.1	2021-04-27 16:19:03.376	info	(30063) script.js._MeineSkripte._DEV.testCSV: 3
                                      javascript.1	2021-04-27 16:19:03.375	info	(30063) script.js._MeineSkripte._DEV.testCSV: 2
                                      javascript.1	2021-04-27 16:19:03.374	info	(30063) script.js._MeineSkripte._DEV.testCSV: 1
                                      javascript.1	2021-04-27 16:19:03.250	info	(30063) Start javascript script.js._MeineSkripte._DEV.testCSV
                                      

                                      log sollte 1 2 3 4 7 ausgeben
                                      Gleiches Ergebnis ob Pfad existiert oder nicht

                                      über zeile 12 fragst du ja ab, ob der pfad existiert und beendest dann. das habe ich für den test mal auskommentiert

                                      das ist meine aktuelle Lösung und die funktioniert auch, sie steht da aber nur weil try/catch nicht funktionierte. Jetzt verwundert es mich weshalb bei Dir kein Adapter-Restart durchgeführt wird.

                                      das fs.createWriteStream keinen fehler wirft, hängt evtl. mit der fehlerbehandlungs strategie des moduls ab.

                                      fehler werden da normalerweise über ein error-event abgefangen
                                      https://nodejs.org/api/fs.html#fs_event_error

                                      allerdings wird der fehler auch mit folgender code ergänzung geworfen, weil wahrscheinlich es da bereits vorbei ist.

                                      writer.on('error', function(err) {
                                          log(err);
                                          writer.end();
                                      });
                                      
                                      

                                      Einen Fehler darauf findest du hier. Auch wie alternativ der Fehler dann abgefangen werden kann. Im Text wird von Berechtigungsproblemen geschrieben, aber da kannst du es mal probieren.
                                      Aber wie gesagt, mit Zeile 12 ist zumindest das Problem ob Pfad existiert oder nicht ja abgefragt.

                                      https://stackoverflow.com/questions/43293921/cant-catch-exception-from-fs-createwritestream/43303770

                                      die Antwort habe ich nur zu 90% verstanden, die Leute dort programmieren fast alle in höheren Ligen als ich selbst :-) Aber nur so lernt man etwas, mit der Antwort dort kann ich gut leben und mit writer.on('error',xxx) habe ich nochmal etwas dazu gelernt.

                                      Jetzt bleibt nur noch zu prüfen ob der Adapter auf einem Stable System bei mir anders reagiert, das poste ich dann noch der Vollständigkeit halber.

                                      Dir einen großen Dank für Deine Mühe und Geduld! Der Dank gilt natürlich auch für alle Anderen die sich mit dem Problem beschäftigt haben!

                                      F Offline
                                      F Offline
                                      fastfoot
                                      schrieb am zuletzt editiert von
                                      #22

                                      @fastfoot sagte in Fehler abfangen, aber wie richtig?:

                                      Jetzt bleibt nur noch zu prüfen ob der Adapter auf einem Stable System bei mir anders reagiert, das poste ich dann noch der Vollständigkeit halber.

                                      Auch auf einem Stable System beendet sich der Adapter. Mit folgendem Code lässt sich das aber verhindern, try/catch scheint schlicht der falsche Ansatz gewesen zu sein

                                      writer.on('error', function(err) {
                                          console.log(err);
                                          writer.end();
                                      });        
                                      
                                      

                                      iobroker läuft unter Docker auf QNAP TS-451+
                                      SkriptRecovery: https://forum.iobroker.net/post/930558

                                      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

                                      730

                                      Online

                                      32.6k

                                      Benutzer

                                      82.2k

                                      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