NEWS
JS lokal bearbeiten - hochladen - service restarten
-
Hallo zusammen,
für kleinere Änderungen in Klassen reicht natürlich die Mini-WebIDE die mit dem Javascript Adapter mitkommt.
Da ich aber gerade merke, dass mein Setup immer größer wird, würde ich die Skripte und Klassen gerne lokal bearbeiten.
Das Problem ist aber, dass ich nicht weiß wo die Dateien auf dem Raspberry liegen? Und welchen Service muss ich danach neustarten damit die aktualisierten Skripte auch geladen werden?Welche ES Version wird überhaupt supported? 5? 6? Und was läuft da im Backend? Wird der Code mit Webpack gebundled o.ä.?
Ich habe mal auf die Schnelle eine kleine Klasse mit "export default" in eine eigene Datei geschrieben und dann in einem anderen Skript mit "import" versucht die Klasse zu importieren. Hat aber nicht geklappt. Da kam nur ein JS-Error in der Konsole. Sind so Module möglich? Für Tipps wäre ich dankbarDanke schonmal
-
Sind ja einige Fragen, fangen wir mal "Oben" an:
1.) Generell liegen die Skripte als Objekte im iBroker, also eher schlecht editierbar. Daher gibt es in den neueren Javascript Versionen eine Funktion namens "Mirroring".Anklicken, lokalen Pfad angeben und schon werden alle Skripte dort ins Filesystem gesynct. Damit kaommst Du Sie dort bearbeiten. Änderungen werden sobald das File gespeichert wird zurckgesynct und das Skript neu gestartet. Wie Du es dann vom Raspi auf den Laptop oder so bekommst musst Du dann sehen.
2.) ES version hängt von deiner nodejs Version ab. Alle aktuellen sind ES6 ...
3.) bei den Skripten wähe zwischen JS und TS als Typ ... import wäre daher eher Typescript . Das "Backend" ist nodejs
4.) NPM Module die Du brauchst und nicht da sind im Adapter angeben dann werde die installiert.
5.) Skript sich gegenseitig zu importieren geht aktuell noch nicht so wirklich. Globale Skripte werden vor andere Skripte quasi davorgehangen, damit kann man sowas bauen aber muss aufpassen.
Reicht das erstmal als Übersicht?
-
Schonmal vielen Dank @apollon77 für deine Antworten. Da waren schon nützliche Infos dabei.
Zu 1:
Ich habe den aktuellsten Javascript-Adapter installiert aber in den Einstellungen sehe ich nix von "Mirroring". Das klingt genau danach wonach ich gesucht habe.
Auch meine iobroker version ist die aktuellste.
Oder bin ich an der falschen Stelle? Oder was meinst du mit "in den neueren JS-Versionen"?Zu 5:
Ok, verstanden. Klingt aber auch so als wäre das etwas was mir helfen wir. -
@jiglitsch Was ist denn die "aktuellste Version" die Du hast? Es kommt bald die 4.6.3 aus dem latest ins Stable. Mirroring ist seit der 4.2.1 drin
-
4.5.1. Das ist die, die in ioBroker über das Adaptermenü installiert weden kann. Meine ganze ioBroker Instanz ist erst 3 Tage alt.
... Fuck ...
Ich wollte dir gerade einen Screenshot machen, da hab ich das input-Feld gesehen. Es gibt aber keinen Haken, daher habe ich das gestern scheinbar übersehen. War ja gestern auch schon spätCool, dann versuche ich das mal. Danke dir!
-
@jiglitsch Ja Haken war aus meinem Kopf und scheinbar "Misleading"
-
Kein Problem.
Gibts beim Mirroring gerade irgendwelche bekannten Probleme?
Ich hab das jetzt mal ausprobiert und habe die gespiegelte datei, die dem user iobroker gehört, mit dem user iobroker via vim verändert.
Aber sofort wenn ich die Datei speichere, ist sie plötzlich weg. Auch im iobroker javascript menü ist sie plötzlich weg... gott sei dank habe ich ein Backup gemachtWas ist da los? Ich vermute ja irgendein permission problem... aber welches?
// UPDATE
Auch ein überschreiben der Mirror-Datei mit "mv", löscht die Datei. Sowohl im Mirror als auch das original -
@jiglitsch Bitte mal issue auf machen ... auch was genau du mit "überschreiben per mv" meinst
-
Ich meine den cli-Befehl "mv".
Also jetzt, nachdem ich die Mirror-ordner via chmod auf 777 (shame on me) geändert habe, sind die Skripte wieder da O_o
kA ob das Absicht ist? Scheint auf jedenfall irgendein perm-thema gewesen zu sein.