NEWS
fs.appendFileSync funktioniert nicht mehr
-
Hallo,
habe mir bisher meine javascript-Lösungen zusammengesucht und es lief ganz gut.
Ich erstelle z.B. jeden Tag eine .csv-Datei mit Fotovoltaik-Daten und konnte den Schreibbefehl bisher recht einfach halten, indem ich einen Datensatz immer angehängt habe, auch morgens, wenn die Datei noch gar nicht existiert.
fs.appendFileSync (...) erstellte mir die Datei oder hing den aktuellen Datensatz an.
Nachdem ich am 01.06.24 Module im ioBroker aktualisiert habe, funktionert das wohl nicht mehr.
Die Dateien sollen in /opt/iobroker/iobroker-data/files/javascript.admin/ erstellt werden.
Error: script....: Error: Permission denied Error: at Request._callback (script ...:306:8) // *Das bezieht sich wohl auf fs.appendFileSync* // Warning: request package is deprecated - please use httpGet (or a stable lib like axios instead).
Gibt es einen einfachen Weg, um mein Script wieder in Betrieb nehmen zu können?
Liebe Grüße
Wolfgang
-
@wolfren sagte in fs.appendFileSync funktioniert nicht mehr:
Gibt es einen einfachen Weg, um mein Script wieder in Betrieb nehmen zu können?
ja!
@wolfren sagte in fs.appendFileSync funktioniert nicht mehr:
please use httpGet
weil
@wolfren sagte in fs.appendFileSync funktioniert nicht mehr:
request package is deprecated
Dazu gibt es gefühlt 100 Threads im Forum.
Da du dein Skript nicht zeigst, kann ich mehr nicht sagen
-
@wolfren sagte in fs.appendFileSync funktioniert nicht mehr:
Die Dateien sollen in /opt/iobroker/iobroker-data/files/javascript.admin/ erstellt werden.
Aus dem Changelog vom Javascript Adapter v8.0.0:
(klein0r) Breaking change: Protected filesystem (iobroker-data/files) to prevent direct file writes
Kurz um dieser Pfad wurde für alle Schreibvorgänge durch fs gesperrt.
Der Hintergrund ist das ioBroker zum Teil spezielle Dinge mit den Dateien macht, die durch externe Änderungen nicht passieren. Daher gibt es extra Funktionen im Javascript Adapter wie writeFile die sich darum Kümmern.
Allerdings scheint es kein appendFile zu geben.
Deswegen würde ich empfehlen einen anderen Pfad wie "/home/iobroker" zu verwenden. -
@wolfren sagte in fs.appendFileSync funktioniert nicht mehr:
Die Dateien sollen in /opt/iobroker/iobroker-data/files/javascript.admin/
Warum? Was haben die da zu suchen? Nichts, daher ist das nicht mehr erlaubt. Einfach ein Verzeichnis höher gehen. Also z.b.
/opt/iobroker/iobroker-data/
. Alles infiles
ist nicht erlaubt (und war auch nie gut oder richtig). -
@jey-cee sagte in fs.appendFileSync funktioniert nicht mehr:
Allerdings scheint es kein appendFile zu geben.
Ja, füge ich noch hinzu (steht auf Todo). Bis dahin muss man selbst laden, anhängen, schreiben.
-
Vielen Dank an alle, die mir geantwortet haben. Soweit habe ich dieses Problem nun verstanden.
Der ioBroker ist schon ein komplexes System und mit dem Zusammensuchen von Infos mit Google schleichen sich Probleme ein, die erst später auffallen.
Für meine Dateien habe ich in /opt/iobroker/iobroker-data ein neues Unterverzeichnis erstellt und dort werden meine Dateien nun wieder mit fs.appendFileSync erzeugt.
-
@wolfren sagte in fs.appendFileSync funktioniert nicht mehr:
mit dem Zusammensuchen von Infos mit Google schleichen sich Probleme ein
Ja, es gibt leider extrem viele Beiträge mit Fehlern und Dingen, welche man nicht so tun sollte.