NEWS
Fehler bei konstanten Variablen
-
Ich habe bei all meinem Skripten ein Fehler bei den ich konstanten Variablen verwende.
Und zwar ist "zimmer" rot unterstrichen mit der Fehlermeldung "index2.js(x, x): 'xyz' was also declared here."const zimmer = rooms()[6]; // Welches Zimmer
Diese "const" habe ich vielen Skripten verwendet die "rooms()" kommt aus aus dem "Global".
Aber es betrifft auch const die nicht aus dem Global kommen die ich aber auch in einigen Skripten verwende.
z.B.const script_path = 'javascript.' + 0 + '.Heizung.' + zimmer; // Vorgabe des Pfades des Scriptes
Dort steht zusätzlich die Fehlermeldung "Cannot redeclare block-scoped variable 'script_path'." drin. Hier ist "script_path" rot unterstrichen.
Wenn ich den Befehl export drunter schreibe verschwinden die Fehler!
const zimmer = rooms()[6]; // Welches Zimmer const script_path = 'javascript.' + 0 + '.Heizung.' + zimmer; // Vorgabe des Pfades des Scriptes export{};
Kann mir einer vielleicht sagen woran dies liegen kann??
Vielen Dank schonmal
-
@pat Alles, was in einem Script im Ordner "global" deklariert wurde, wird automatisch an alle anderen Scripts dran gehängt. Daher sollte man "global" wirklich nur für Sachen nutzen, die man wirklich in fast allen Scripten braucht. Könnte es nicht einfach daran liegen?
-
@ahnungsbefreit
NabendAlso die "rooms()" will ich ja in jedem Skript haben da ich dort ein Array habe mit all meinem räumen somit muss ich nicht im jeden Skript die neu anlegen.
Da ich ich in jedem Skript wo ich die Räume brauche auch immer die const mir "zimmer" genannt habe das er deshalb meckert. Wenn ich die zimmer1 umbenenne ist der Fehler auch weg. Aber eigentlich dürft es ihn nicht stören.
Und warum ist der Fehler weg mit export ??
PS. Die Skripte funktionieren alle. Es ist nur weil mich das stört.
-
@pat sagte in Fehler bei konstanten Variablen:
Da ich ich in jedem Skript wo ich die Räume brauche auch immer die const mir "zimmer" genannt habe das er deshalb meckert. Wenn ich die zimmer1 umbenenne ist der Fehler auch weg. Aber eigentlich dürft es ihn nicht stören.
Wenn er in jedem Script "meckert", sobald Du eine const zimmer deklarierst, kann das eigentlich nur bedeuten, dass Du das auch in einem "global" script deklariert hast
-
@pat sagte in Fehler bei konstanten Variablen:
Ich habe bei all meinem Skripten ein Fehler bei den ich konstanten Variablen verwende.
Und zwar ist "zimmer" rot unterstrichen mit der Fehlermeldung "index2.js(x, x): 'xyz' was also declared here."const zimmer = rooms()[6]; // Welches Zimmer
Diese "const" habe ich vielen Skripten verwendet die "rooms()" kommt aus aus dem "Global".
Aber es betrifft auch const die nicht aus dem Global kommen die ich aber auch in einigen Skripten verwende.
z.B.const script_path = 'javascript.' + 0 + '.Heizung.' + zimmer; // Vorgabe des Pfades des Scriptes
Dort steht zusätzlich die Fehlermeldung "Cannot redeclare block-scoped variable 'script_path'." drin. Hier ist "script_path" rot unterstrichen.
Wenn ich den Befehl export drunter schreibe verschwinden die Fehler!
const zimmer = rooms()[6]; // Welches Zimmer const script_path = 'javascript.' + 0 + '.Heizung.' + zimmer; // Vorgabe des Pfades des Scriptes export{};
Kann mir einer vielleicht sagen woran dies liegen kann??
Vielen Dank schonmal
const darf innerhalb des gleichen scopes nicht erneut deklariert werden.
wenn du const verwendest, dann sollte der Inhalt auch wirklich über die Laufzeit des Skripts KONSTANT, also unveränderlich sein.
Falls es das nicht ist (was die Fehlermeldung vermuten lässt, da du immer neu zuweist) dann verwende "var" oder "let" -
@pat sagte in Fehler bei konstanten Variablen:
Diese "const" habe ich vielen Skripten verwendet die "rooms()" kommt aus aus dem "Global".
Wenn du das gleiche const (also
zimmer
) nur in anderen nicht-globalen Skripten hast, ist das ok. Der Editor "weiß" nicht, dass diese Skripte voneinander getrennt sind. Für ihn sind mehrere Skripte "geladen", die alle den globalen Scope erweitern (Im Browser wäre das so, so funktioniert es ioBroker aber nicht).
Das sollte aber nur ein "Problem" beim Bearbeiten sein - sofern das Skript startet, einfach ignorieren.Wenn ich den Befehl export drunter schreibe verschwinden die Fehler!
Das liegt daran, dass das Skript dann vom Editor als "Modul" interpretiert wird und somit nicht mehr diesen imaginären globalen Scope erweitert.
-
Vielen lieben Dank dir!!