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. Cannot redeclare block-scoped variable

NEWS

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

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

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

Cannot redeclare block-scoped variable

Geplant Angeheftet Gesperrt Verschoben JavaScript
36 Beiträge 7 Kommentatoren 3.2k Aufrufe 5 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.
  • CodierknechtC Codierknecht

    @hub01 sagte in Cannot redeclare block-scoped variable:

    einige Skripte

    Wie heißen denn die Scripte in denen das auftritt?

    Hast Du globale Scripte im Einsatz?

    BTW: Du bist sicher, dass Du in einigen Monaten noch weißt, was sich hinter cUeBe1PhAnl, cUeBe1PhLad usw. verbirgt? Sprechende Variablennamen fressen kein Brot ;-)
    https://dev.to/gervaisamoah/a-guide-to-clean-code-the-power-of-good-names-3f6i

    R Offline
    R Offline
    Ralf 2
    schrieb am zuletzt editiert von
    #7

    @hub01
    Handelt es sich im JavaScript oder um TypeScript?
    TypeScript schaut auf ggf. alle Scripte und wirft dann diese Meldung (oder manchmal auch nicht).
    Man kann die Meldung ignorieren, oder ein Export davor setzen:

    export const cUeBe1PhAnl = 1200;
    export const cUeBe1PhLad =  230;
    

    Ich setze in meinen Scripten gerne in doIt() als Function für die Hauptfunction ein, auch das wird immer wieder angemeckert, auch hier hilf ein export vor der deklaration der Function.

    Gruß Ralf

    OliverIOO 1 Antwort Letzte Antwort
    1
    • H hub01

      einige Skripte mit const-Anweisungen, z.B.:

      const cUeBe1PhAnl = 1200;
      const cUeBe1PhLad =  230;
      

      zeigen manchmal folgende Meldungen an:

      index1.js  1 von 7 Problemen
      Cannot redeclare block-scoped variable ‘cUeBe1PhAnl ‘
      index0.js(119, 7): ‘cUeBe1PhAnl ‘ was also declared here.
      
      index1.js  1 von 1 Problemen
      Definitions of the following identifiers conflict with those in another file: cUeBe1PhAnl, cUeBe1PhLad, usw.
      index0.js(119, 1): Conflicts are in this file.
      

      MOD-EDIT: Code in code-tags gesetzt!

      Die Meldungen sind nicht immer da.
      Die Skripte laufen auch alle ohne Probleme.

      Frage:
      wie findet man in Linux/Debian die beiden Dateien „index0.js“ und „index1.js“?
      (nicht wo)

      wann und warum werden diese Meldung angezeigt?

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

      @hub01

      wo hast du diese ausgaben herauskopiert? im javascriptadapter steht das so eigentlich nicht drin
      im iobroker log ebenfalls nicht

      wenn du mit vscode arbeitest, dann gibt es da so eine globalsuche

      oder im javascriptadapter die suche, die über alle skripte nach deinem variablennamen sucht.
      const (Konstante) variablen dürfen nicht wieder beschrieben werden, also wenn du irgendwo

      cUeBe1PhAnl = 123
      

      findest, dann ist das der Fehler.
      oder du änderst const einfach in let um

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

      1 Antwort Letzte Antwort
      0
      • R Ralf 2

        @hub01
        Handelt es sich im JavaScript oder um TypeScript?
        TypeScript schaut auf ggf. alle Scripte und wirft dann diese Meldung (oder manchmal auch nicht).
        Man kann die Meldung ignorieren, oder ein Export davor setzen:

        export const cUeBe1PhAnl = 1200;
        export const cUeBe1PhLad =  230;
        

        Ich setze in meinen Scripten gerne in doIt() als Function für die Hauptfunction ein, auch das wird immer wieder angemeckert, auch hier hilf ein export vor der deklaration der Function.

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

        @ralf-2 sagte in Cannot redeclare block-scoped variable:

        TypeScript schaut auf ggf. alle Scripte und wirft dann diese Meldung (oder manchmal auch nicht).

        typescript erkennt ob man eine const variable wieder beschreiben möchte und wählt dann für den transpilierten code die richtige deklaration bzw zeigt einen fehler an.

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

        1 Antwort Letzte Antwort
        0
        • Thomas BraunT Thomas Braun

          @hub01

          Logisch, der user darf die Verzeichnisse nicht betreten.

          H Offline
          H Offline
          hub01
          schrieb am zuletzt editiert von
          #10

          @thomas-braun sagte in Cannot redeclare block-scoped variable:

          @hub01

          Logisch, der user darf die Verzeichnisse nicht betreten.

          Dann ist find keine Möglichkeit, die Files zu finden?
          Oder gibt es da noch einen Parameter, oder einen anderen Weg?

          OliverIOO Thomas BraunT 2 Antworten Letzte Antwort
          0
          • H hub01

            @thomas-braun sagte in Cannot redeclare block-scoped variable:

            @hub01

            Logisch, der user darf die Verzeichnisse nicht betreten.

            Dann ist find keine Möglichkeit, die Files zu finden?
            Oder gibt es da noch einen Parameter, oder einen anderen Weg?

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

            @hub01

            das weiß ich nicht.
            du hast meine fragen noch nicht beantwortet, wo du das rauskopiert hast.

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

            1 Antwort Letzte Antwort
            0
            • CodierknechtC Codierknecht

              @hub01 sagte in Cannot redeclare block-scoped variable:

              einige Skripte

              Wie heißen denn die Scripte in denen das auftritt?

              Hast Du globale Scripte im Einsatz?

              BTW: Du bist sicher, dass Du in einigen Monaten noch weißt, was sich hinter cUeBe1PhAnl, cUeBe1PhLad usw. verbirgt? Sprechende Variablennamen fressen kein Brot ;-)
              https://dev.to/gervaisamoah/a-guide-to-clean-code-the-power-of-good-names-3f6i

              H Offline
              H Offline
              hub01
              schrieb am zuletzt editiert von
              #12

              @codierknecht sagte in Cannot redeclare block-scoped variable:

              @hub01 sagte in Cannot redeclare block-scoped variable:

              einige Skripte

              Wie heißen denn die Scripte in denen das auftritt?

              Hast Du globale Scripte im Einsatz?

              BTW: Du bist sicher, dass Du in einigen Monaten noch weißt, was sich hinter cUeBe1PhAnl, cUeBe1PhLad usw. verbirgt? Sprechende Variablennamen fressen kein Brot ;-)
              https://dev.to/gervaisamoah/a-guide-to-clean-code-the-power-of-good-names-3f6i

              Die Scripte lauten „PV Werte“, „PV Überschussladen“ usw.
              Keine globalen Scripte.
              Alle Skripte liegen in einem Ordner „HS_Skripte“.
              Ob dieser Ordner global ist, kann ich nicht erkennen.

              Ich kennzeichne jede Konstante und Variable mit einem Kommentar.
              Zu meiner Zeit war Speicher knapp und ich tu mich so leichter beim Lesen vom Script.

              //                                  // benötigter Überschuss [W]:
              //                                  // --------------------------------------------
              const cUeBe1PhAnl = 1200;           // 1phasig Anlauf                    (>230V*6A)
              const cUeBe1PhLad =  230;           // 1phasig Hochschalten               (230V*1A)
              const cUeBe1PhHyst = 100;           // 1phasig Hysterese
              const cUeBe3PhAnl = 4250;           // 3phasig Anlauf                  (>3*230V*6A)
              const cUeBe3PhLad =  690;           // 3phasig Hochschalten             (3*230V*1A)
              const cUeBe3PhHyst = 150;           // 3phasig Hysterese
              const cUeBeUm     = 1150;           // Umschaltung 1->3Ph (1x16A->3x7A) 5A ( 5,00A)
              
              H CodierknechtC 2 Antworten Letzte Antwort
              0
              • H hub01

                @thomas-braun sagte in Cannot redeclare block-scoped variable:

                @hub01

                Logisch, der user darf die Verzeichnisse nicht betreten.

                Dann ist find keine Möglichkeit, die Files zu finden?
                Oder gibt es da noch einen Parameter, oder einen anderen Weg?

                Thomas BraunT Online
                Thomas BraunT Online
                Thomas Braun
                Most Active
                schrieb am zuletzt editiert von
                #13

                @hub01 sagte in Cannot redeclare block-scoped variable:

                Dann ist find keine Möglichkeit, die Files zu finden?

                find ist DIE Möglichkeit files zu finden.

                Zur Not halt mit root-Rechten ausführen.

                Linux-Werkzeugkasten:
                https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
                NodeJS Fixer Skript:
                https://forum.iobroker.net/topic/68035/iob-node-fix-skript
                iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

                1 Antwort Letzte Antwort
                0
                • H hub01

                  @codierknecht sagte in Cannot redeclare block-scoped variable:

                  @hub01 sagte in Cannot redeclare block-scoped variable:

                  einige Skripte

                  Wie heißen denn die Scripte in denen das auftritt?

                  Hast Du globale Scripte im Einsatz?

                  BTW: Du bist sicher, dass Du in einigen Monaten noch weißt, was sich hinter cUeBe1PhAnl, cUeBe1PhLad usw. verbirgt? Sprechende Variablennamen fressen kein Brot ;-)
                  https://dev.to/gervaisamoah/a-guide-to-clean-code-the-power-of-good-names-3f6i

                  Die Scripte lauten „PV Werte“, „PV Überschussladen“ usw.
                  Keine globalen Scripte.
                  Alle Skripte liegen in einem Ordner „HS_Skripte“.
                  Ob dieser Ordner global ist, kann ich nicht erkennen.

                  Ich kennzeichne jede Konstante und Variable mit einem Kommentar.
                  Zu meiner Zeit war Speicher knapp und ich tu mich so leichter beim Lesen vom Script.

                  //                                  // benötigter Überschuss [W]:
                  //                                  // --------------------------------------------
                  const cUeBe1PhAnl = 1200;           // 1phasig Anlauf                    (>230V*6A)
                  const cUeBe1PhLad =  230;           // 1phasig Hochschalten               (230V*1A)
                  const cUeBe1PhHyst = 100;           // 1phasig Hysterese
                  const cUeBe3PhAnl = 4250;           // 3phasig Anlauf                  (>3*230V*6A)
                  const cUeBe3PhLad =  690;           // 3phasig Hochschalten             (3*230V*1A)
                  const cUeBe3PhHyst = 150;           // 3phasig Hysterese
                  const cUeBeUm     = 1150;           // Umschaltung 1->3Ph (1x16A->3x7A) 5A ( 5,00A)
                  
                  H Offline
                  H Offline
                  hub01
                  schrieb am zuletzt editiert von
                  #14

                  @hub01
                  weitere Antworten:

                  Es sind JavaScripts

                  Die beiden Meldungen hatte ich so nicht eingestellt.
                  Die wurden nachträglich (wohl aus Versehen) in Code-Tags gesetzt.

                  Die Konstanten werden nicht in mehreren Scripts verwendet und auch nicht neu beschrieben.
                  Aber es gibt ältere Versionen meiner Scripts, die aber nicht laufen.
                  Könnten davon die Meldungen kommen?

                  1 Antwort Letzte Antwort
                  0
                  • H hub01

                    @codierknecht sagte in Cannot redeclare block-scoped variable:

                    @hub01 sagte in Cannot redeclare block-scoped variable:

                    einige Skripte

                    Wie heißen denn die Scripte in denen das auftritt?

                    Hast Du globale Scripte im Einsatz?

                    BTW: Du bist sicher, dass Du in einigen Monaten noch weißt, was sich hinter cUeBe1PhAnl, cUeBe1PhLad usw. verbirgt? Sprechende Variablennamen fressen kein Brot ;-)
                    https://dev.to/gervaisamoah/a-guide-to-clean-code-the-power-of-good-names-3f6i

                    Die Scripte lauten „PV Werte“, „PV Überschussladen“ usw.
                    Keine globalen Scripte.
                    Alle Skripte liegen in einem Ordner „HS_Skripte“.
                    Ob dieser Ordner global ist, kann ich nicht erkennen.

                    Ich kennzeichne jede Konstante und Variable mit einem Kommentar.
                    Zu meiner Zeit war Speicher knapp und ich tu mich so leichter beim Lesen vom Script.

                    //                                  // benötigter Überschuss [W]:
                    //                                  // --------------------------------------------
                    const cUeBe1PhAnl = 1200;           // 1phasig Anlauf                    (>230V*6A)
                    const cUeBe1PhLad =  230;           // 1phasig Hochschalten               (230V*1A)
                    const cUeBe1PhHyst = 100;           // 1phasig Hysterese
                    const cUeBe3PhAnl = 4250;           // 3phasig Anlauf                  (>3*230V*6A)
                    const cUeBe3PhLad =  690;           // 3phasig Hochschalten             (3*230V*1A)
                    const cUeBe3PhHyst = 150;           // 3phasig Hysterese
                    const cUeBeUm     = 1150;           // Umschaltung 1->3Ph (1x16A->3x7A) 5A ( 5,00A)
                    
                    CodierknechtC Offline
                    CodierknechtC Offline
                    Codierknecht
                    Developer Most Active
                    schrieb am zuletzt editiert von
                    #15

                    @hub01 sagte in Cannot redeclare block-scoped variable:

                    Ich kennzeichne jede Konstante und Variable mit einem Kommentar.

                    471acc6a-9668-422e-8c77-3eda64a7c7db-image.png
                    Der Mann gilt als einer der Mitentwickler von C. Der sollte es wissen ;-)

                    Bei sowas wie

                    const UEBERSCHUSS_1PHASIG_ANLAUF = 1200;
                    const UEBERSCHUSS_1PHASIG_LADEN =  230;
                    const UEBERSCHUSS_1PHASIG_HYSTERESE = 100;
                    const UEBERSCHUSS_3PHASIG_ANLAUF = 4250;
                    const UEBERSCHUSS_3PHASIG_LADEN =  690;
                    const UEBERSCHUSS_3PHASIG_HYSTERESE = 150;
                    const UEBERSCHUSS_UMSCHALTEN = 1150;
                    

                    spart man sich den Blick auf die Deklaration. Da weiß man in jeder Codezeile gleich, um was es geht.

                    Zu meiner Zeit war Speicher knapp

                    Zu meiner auch. Bei Microcontrollern ist er es z.T. immer noch.
                    Aber hier braucht ja der Kommentar mehr Speicher als ein sinnvoller Name.
                    Und im Compilat sind das eh nur Adressen. Die sind immer gleich lang - egal wie lang der Name einer Variablen oder Konstanten sein mag.

                    Aber bitte nicht als Belehrung verstehen. Das macht jeder wie er meint.
                    Ich selbst habe das auch Jahrzehnte lang eher knapp gehalten und beiße mir auch bei meinem Team die Zähne aus. Da komme ich mir ein bisschen vor wie Don Quichote ;-)
                    Irgendwann kommt man dann dahinter, dass sich Code bei klarer Benamsung einfach viel besser lesen lässt ... ohne jegliche Kommentare.

                    Ich würde da aber nicht so weit gehen wie Uncle Bob:
                    b93f439e-e4f5-422f-a051-792a05aaeed9-image.png

                    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                    Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                    HmIP|ZigBee|Tasmota|Unifi
                    Zabbix Certified Specialist
                    Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                    OliverIOO 1 Antwort Letzte Antwort
                    0
                    • CodierknechtC Codierknecht

                      @hub01 sagte in Cannot redeclare block-scoped variable:

                      Ich kennzeichne jede Konstante und Variable mit einem Kommentar.

                      471acc6a-9668-422e-8c77-3eda64a7c7db-image.png
                      Der Mann gilt als einer der Mitentwickler von C. Der sollte es wissen ;-)

                      Bei sowas wie

                      const UEBERSCHUSS_1PHASIG_ANLAUF = 1200;
                      const UEBERSCHUSS_1PHASIG_LADEN =  230;
                      const UEBERSCHUSS_1PHASIG_HYSTERESE = 100;
                      const UEBERSCHUSS_3PHASIG_ANLAUF = 4250;
                      const UEBERSCHUSS_3PHASIG_LADEN =  690;
                      const UEBERSCHUSS_3PHASIG_HYSTERESE = 150;
                      const UEBERSCHUSS_UMSCHALTEN = 1150;
                      

                      spart man sich den Blick auf die Deklaration. Da weiß man in jeder Codezeile gleich, um was es geht.

                      Zu meiner Zeit war Speicher knapp

                      Zu meiner auch. Bei Microcontrollern ist er es z.T. immer noch.
                      Aber hier braucht ja der Kommentar mehr Speicher als ein sinnvoller Name.
                      Und im Compilat sind das eh nur Adressen. Die sind immer gleich lang - egal wie lang der Name einer Variablen oder Konstanten sein mag.

                      Aber bitte nicht als Belehrung verstehen. Das macht jeder wie er meint.
                      Ich selbst habe das auch Jahrzehnte lang eher knapp gehalten und beiße mir auch bei meinem Team die Zähne aus. Da komme ich mir ein bisschen vor wie Don Quichote ;-)
                      Irgendwann kommt man dann dahinter, dass sich Code bei klarer Benamsung einfach viel besser lesen lässt ... ohne jegliche Kommentare.

                      Ich würde da aber nicht so weit gehen wie Uncle Bob:
                      b93f439e-e4f5-422f-a051-792a05aaeed9-image.png

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

                      @codierknecht

                      da gibt es schöne regeln zur code quality, die sich automatisiert messen lassen
                      oder durch linting überprüfen lassen.

                      • Markiere den Anfang und das Ende von Kontrollstrukturen mithilfe von Einrückungen und platziere den Code dazwischen.
                      • Beschränke dich auf wenige Zeilen.
                      • Vermeide lange Funktionen – ein professioneller Entwickler stimmt zu, dass eine Funktion jeweils nur eine einzelne Aufgabe erfüllen sollte.
                      • Verwende präzise Namenskonventionen.
                      • Halte Zeilen kurz – offensichtlich bevorzugen Menschen kürzere Zeilen, egal ob vertikal oder horizontal.
                      • Nutze das DRY-Prinzip (Don’t Repeat Yourself). Du solltest denselben Code nicht im selben Skript wiederholt einsetzen, sondern wiederkehrende Aufgaben automatisieren.
                      • Schreibe SQL-Schlüsselwörter und -Funktionen in Großbuchstaben, um sie von Spalten- und Tabellennamen zu unterscheiden.
                      • Vermeide tiefe Verschachtelungen.
                      • Hinterlasse Kommentare und setze Prioritäten bei der Dokumentation.

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

                      H CodierknechtC 2 Antworten Letzte Antwort
                      1
                      • OliverIOO OliverIO

                        @codierknecht

                        da gibt es schöne regeln zur code quality, die sich automatisiert messen lassen
                        oder durch linting überprüfen lassen.

                        • Markiere den Anfang und das Ende von Kontrollstrukturen mithilfe von Einrückungen und platziere den Code dazwischen.
                        • Beschränke dich auf wenige Zeilen.
                        • Vermeide lange Funktionen – ein professioneller Entwickler stimmt zu, dass eine Funktion jeweils nur eine einzelne Aufgabe erfüllen sollte.
                        • Verwende präzise Namenskonventionen.
                        • Halte Zeilen kurz – offensichtlich bevorzugen Menschen kürzere Zeilen, egal ob vertikal oder horizontal.
                        • Nutze das DRY-Prinzip (Don’t Repeat Yourself). Du solltest denselben Code nicht im selben Skript wiederholt einsetzen, sondern wiederkehrende Aufgaben automatisieren.
                        • Schreibe SQL-Schlüsselwörter und -Funktionen in Großbuchstaben, um sie von Spalten- und Tabellennamen zu unterscheiden.
                        • Vermeide tiefe Verschachtelungen.
                        • Hinterlasse Kommentare und setze Prioritäten bei der Dokumentation.
                        H Offline
                        H Offline
                        hub01
                        schrieb am zuletzt editiert von
                        #17

                        Ist vermutlich eine Umgewöhnungssache.

                        Wie gesagt, tu ich mich mit Kommentaren leichter.
                        Die kann ich kurz, aber verständlich halten, ohne die Syntax der Programmiersprache zu berücksichtigen.
                        Wenn ich die Kommentare anschaue, weiß ich schnell, was der Code macht.

                        if ((LadeAnsteuerung == VonVisu_Ansteuerung_EIN && Wallbox_Freigabe && Wallbox_Kommunikation_IO)) {
                            if (VonVisu_3PhasenLaden_zulaessig && Ueberschuss_vorhanden_3Phasen_Anlauf>Ueberschuss_benoetigt_3Phasen_Anlauf) {
                            ...
                            }
                        
                            else if (VonVisu_1PhasenLaden_zulaessig && Ueberschuss_vorhanden_1Phasen_Anlauf>Ueberschuss_benoetigt_1Phasen_Anlauf) {
                            ...
                            }
                        
                        if ((iLAnst==cAnstEin && bWBFrg && bWBKommIO)) {        // Einschalten?  Freigabe?  WB-Kommunikation iO?
                            if (b3PhZul && iUeVorh3PhAnl>cUeBe3PhAnl) {         // 3Phasen zulässig?  3Ph-Anlauf-Überschuss vorhanden?
                            ...                                                 //   starte 3-phasig
                            }                                                   //   usw.
                        
                            else if (b1PhZul && iUeVorh1PhAnl>cUeBe1PhAnl) {    // 1Phasen zulässig?  1Ph-Anlauf-Überschuss vorhanden?        
                            ...                                                 //   starte 1-phasig
                            }
                        
                        CodierknechtC 1 Antwort Letzte Antwort
                        0
                        • H hub01

                          Ist vermutlich eine Umgewöhnungssache.

                          Wie gesagt, tu ich mich mit Kommentaren leichter.
                          Die kann ich kurz, aber verständlich halten, ohne die Syntax der Programmiersprache zu berücksichtigen.
                          Wenn ich die Kommentare anschaue, weiß ich schnell, was der Code macht.

                          if ((LadeAnsteuerung == VonVisu_Ansteuerung_EIN && Wallbox_Freigabe && Wallbox_Kommunikation_IO)) {
                              if (VonVisu_3PhasenLaden_zulaessig && Ueberschuss_vorhanden_3Phasen_Anlauf>Ueberschuss_benoetigt_3Phasen_Anlauf) {
                              ...
                              }
                          
                              else if (VonVisu_1PhasenLaden_zulaessig && Ueberschuss_vorhanden_1Phasen_Anlauf>Ueberschuss_benoetigt_1Phasen_Anlauf) {
                              ...
                              }
                          
                          if ((iLAnst==cAnstEin && bWBFrg && bWBKommIO)) {        // Einschalten?  Freigabe?  WB-Kommunikation iO?
                              if (b3PhZul && iUeVorh3PhAnl>cUeBe3PhAnl) {         // 3Phasen zulässig?  3Ph-Anlauf-Überschuss vorhanden?
                              ...                                                 //   starte 3-phasig
                              }                                                   //   usw.
                          
                              else if (b1PhZul && iUeVorh1PhAnl>cUeBe1PhAnl) {    // 1Phasen zulässig?  1Ph-Anlauf-Überschuss vorhanden?        
                              ...                                                 //   starte 1-phasig
                              }
                          
                          CodierknechtC Offline
                          CodierknechtC Offline
                          Codierknecht
                          Developer Most Active
                          schrieb am zuletzt editiert von
                          #18

                          @hub01 sagte in Cannot redeclare block-scoped variable:

                          Ist vermutlich eine Umgewöhnungssache.

                          Ist es! Das dauert möglicherweise Jahre.

                          Hat man sich aber einmal daran gewöhnt, will man's nicht mehr anders haben.
                          Als Einzelkämpfer dient das lediglich den eigenen Idealen (und der Lesbarkeit nach Monaten oder Jahren).
                          Aber spätestens wenn's um Adapter-Code geht und Dir die Reviewer jede zweite Codezeile um die Ohren hauen, gewöhnt man sich ganz schnell daran :grin:

                          "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                          Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                          HmIP|ZigBee|Tasmota|Unifi
                          Zabbix Certified Specialist
                          Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                          1 Antwort Letzte Antwort
                          0
                          • OliverIOO OliverIO

                            @codierknecht

                            da gibt es schöne regeln zur code quality, die sich automatisiert messen lassen
                            oder durch linting überprüfen lassen.

                            • Markiere den Anfang und das Ende von Kontrollstrukturen mithilfe von Einrückungen und platziere den Code dazwischen.
                            • Beschränke dich auf wenige Zeilen.
                            • Vermeide lange Funktionen – ein professioneller Entwickler stimmt zu, dass eine Funktion jeweils nur eine einzelne Aufgabe erfüllen sollte.
                            • Verwende präzise Namenskonventionen.
                            • Halte Zeilen kurz – offensichtlich bevorzugen Menschen kürzere Zeilen, egal ob vertikal oder horizontal.
                            • Nutze das DRY-Prinzip (Don’t Repeat Yourself). Du solltest denselben Code nicht im selben Skript wiederholt einsetzen, sondern wiederkehrende Aufgaben automatisieren.
                            • Schreibe SQL-Schlüsselwörter und -Funktionen in Großbuchstaben, um sie von Spalten- und Tabellennamen zu unterscheiden.
                            • Vermeide tiefe Verschachtelungen.
                            • Hinterlasse Kommentare und setze Prioritäten bei der Dokumentation.
                            CodierknechtC Offline
                            CodierknechtC Offline
                            Codierknecht
                            Developer Most Active
                            schrieb am zuletzt editiert von
                            #19

                            @oliverio
                            OT: Die Coding-Conventions in meinem Team umfassen einige Bildschirmseiten.
                            Der größte Teil davon wird in der Continuous-Integration-Pipeline als allererstes automatisch geprüft.
                            Wird gegen die Regeln verstoßen, bricht CI ab und das ganze Team erhält 'ne nette Mail. Das übt :grinning:

                            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                            Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                            HmIP|ZigBee|Tasmota|Unifi
                            Zabbix Certified Specialist
                            Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                            OliverIOO 1 Antwort Letzte Antwort
                            0
                            • CodierknechtC Codierknecht

                              @oliverio
                              OT: Die Coding-Conventions in meinem Team umfassen einige Bildschirmseiten.
                              Der größte Teil davon wird in der Continuous-Integration-Pipeline als allererstes automatisch geprüft.
                              Wird gegen die Regeln verstoßen, bricht CI ab und das ganze Team erhält 'ne nette Mail. Das übt :grinning:

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

                              @codierknecht
                              Sehr gut
                              Wobei ich eher ein Fan davon wäre das das jeder einzelne sofort sieht und nicht erst aus einer Pipeline.

                              Aus diesem Grund habe ich den repochecker auch erweitert das er auch lokal prüft.
                              Seither ist die Anzahl der rebuilds und daraus resultierende folgefehler (versionsnummer kann nicht auf npm gefunden werden) gesunken.

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

                              CodierknechtC 1 Antwort Letzte Antwort
                              0
                              • OliverIOO OliverIO

                                @codierknecht
                                Sehr gut
                                Wobei ich eher ein Fan davon wäre das das jeder einzelne sofort sieht und nicht erst aus einer Pipeline.

                                Aus diesem Grund habe ich den repochecker auch erweitert das er auch lokal prüft.
                                Seither ist die Anzahl der rebuilds und daraus resultierende folgefehler (versionsnummer kann nicht auf npm gefunden werden) gesunken.

                                CodierknechtC Offline
                                CodierknechtC Offline
                                Codierknecht
                                Developer Most Active
                                schrieb am zuletzt editiert von
                                #21

                                @oliverio sagte in Cannot redeclare block-scoped variable:

                                Wobei ich eher ein Fan davon wäre das das jeder einzelne sofort sieht und nicht erst aus einer Pipeline.

                                Wenn er das an seinem Code vorher testet, wird er natürlich darauf gestoßen.
                                Vergisst man aber gerne mal.

                                "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                                Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                                HmIP|ZigBee|Tasmota|Unifi
                                Zabbix Certified Specialist
                                Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                                H 1 Antwort Letzte Antwort
                                0
                                • CodierknechtC Codierknecht

                                  @oliverio sagte in Cannot redeclare block-scoped variable:

                                  Wobei ich eher ein Fan davon wäre das das jeder einzelne sofort sieht und nicht erst aus einer Pipeline.

                                  Wenn er das an seinem Code vorher testet, wird er natürlich darauf gestoßen.
                                  Vergisst man aber gerne mal.

                                  H Offline
                                  H Offline
                                  hub01
                                  schrieb am zuletzt editiert von
                                  #22

                                  lassen wir mal das Thema Programmierstil beiseite,

                                  ich finde die beiden Files noch immer nicht (auch nicht als root),
                                  und weiß noch nicht, warum die Meldungen manchmal angezeigt werden und manchmal nicht.

                                  CodierknechtC T 2 Antworten Letzte Antwort
                                  0
                                  • H hub01

                                    lassen wir mal das Thema Programmierstil beiseite,

                                    ich finde die beiden Files noch immer nicht (auch nicht als root),
                                    und weiß noch nicht, warum die Meldungen manchmal angezeigt werden und manchmal nicht.

                                    CodierknechtC Offline
                                    CodierknechtC Offline
                                    Codierknecht
                                    Developer Most Active
                                    schrieb am zuletzt editiert von
                                    #23

                                    @hub01
                                    Du könntest mal versuchen, das ignorieren zu lassen.

                                    // @ts-ignore
                                    const cUeBe1PhAnl = 1200;
                                    

                                    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                                    Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                                    HmIP|ZigBee|Tasmota|Unifi
                                    Zabbix Certified Specialist
                                    Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                                    OliverIOO H 2 Antworten Letzte Antwort
                                    1
                                    • CodierknechtC Codierknecht

                                      @hub01
                                      Du könntest mal versuchen, das ignorieren zu lassen.

                                      // @ts-ignore
                                      const cUeBe1PhAnl = 1200;
                                      
                                      OliverIOO Offline
                                      OliverIOO Offline
                                      OliverIO
                                      schrieb am zuletzt editiert von
                                      #24

                                      @codierknecht
                                      Das schaltet nur die transpiler aber nicht runtime Meldungen aus.

                                      Aber wie oben schon gesagt ist mir immer noch schleierhaft wo er die Meldungen herauskopiert hat. Aber nach seinem Post sind die wohl nicht von ihm und die hat irgendwer ergänzt.
                                      Oder hab ich was falsch verstanden?

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

                                      H 1 Antwort Letzte Antwort
                                      0
                                      • H hub01

                                        lassen wir mal das Thema Programmierstil beiseite,

                                        ich finde die beiden Files noch immer nicht (auch nicht als root),
                                        und weiß noch nicht, warum die Meldungen manchmal angezeigt werden und manchmal nicht.

                                        T Nicht stören
                                        T Nicht stören
                                        ticaki
                                        schrieb am zuletzt editiert von
                                        #25

                                        @hub01 sagte in Cannot redeclare block-scoped variable:

                                        lassen wir mal das Thema Programmierstil beiseite,

                                        ich finde die beiden Files noch immer nicht (auch nicht als root),
                                        und weiß noch nicht, warum die Meldungen manchmal angezeigt werden und manchmal nicht.

                                        Dann verrate doch mal wo genau die Meldungen herkommen.

                                        Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                                        Spenden

                                        1 Antwort Letzte Antwort
                                        1
                                        • CodierknechtC Codierknecht

                                          @hub01
                                          Du könntest mal versuchen, das ignorieren zu lassen.

                                          // @ts-ignore
                                          const cUeBe1PhAnl = 1200;
                                          
                                          H Offline
                                          H Offline
                                          hub01
                                          schrieb am zuletzt editiert von
                                          #26

                                          @codierknecht sagte in Cannot redeclare block-scoped variable:

                                          @hub01
                                          Du könntest mal versuchen, das ignorieren zu lassen.

                                          // @ts-ignore
                                          const cUeBe1PhAnl = 1200;
                                          

                                          Dies hilft erst mal, aber nur für die nachfolgende const-Anweisung.
                                          Habe noch etliche const im Skript mit der gleichen Meldung.
                                          Dort müsste ich überall ein @ts-ignore einfügen.

                                          Kann man @ts-ignore einem Block oder dem ganzen Skript zuordnen?

                                          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

                                          801

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          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