NEWS
Blockly Skripte Javascript Fehler in jedem Skript
-
Hallo Liebe iobroker Gemeinde. Ich bin erst kürzlich dazugestoßen, komme soweit ganz gut zurecht und bin froh über die tolle Community! Leider halten sich meinen Kenntnisse noch in Grenzen. Ich betreibe iobroker auf einen Pi4. Die Situation ist folgende:
Ich wollte linkeddevices einrichten, hab das Skript in der Einrichtung ausgeführt. Festgestellt, dass ich den Adapter nicht brauche und deinstalliert. Nachdem ich in meine Blockly Skripte zurück bin kommt folgende error meldung:
error javascript.0 (27079) script.js.Eigene_Punkte.Anwesenheit compile failed: at script.js.Eigene_Punkte.Anwesenheit:2
im Log steht folgendes:
2022-03-31 11:15:30.888 - error: javascript.0 (27079) var = {}; 2022-03-31 11:15:30.889 - error: javascript.0 (27079) ^ 2022-03-31 11:15:30.889 - error: javascript.0 (27079) SyntaxError: Unexpected token '=' 2022-03-31 11:15:30.889 - error: javascript.0 (27079) at new Script (vm.js:102:7) 2022-03-31 11:15:30.889 - error: javascript.0 (27079) at Object.createScript (vm.js:262:10) 2022-03-31 11:15:30.890 - error: javascript.0 (27079) at createVM (/opt/iobroker/node_modules/iobroker.javascript/main.js:1486:28) 2022-03-31 11:15:30.890 - error: javascript.0 (27079) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1735:37) 2022-03-31 11:15:30.890 - error: javascript.0 (27079) at /opt/iobroker/node_modules/iobroker.javascript/main.js:1836:17 2022-03-31 11:15:30.891 - error: javascript.0 (27079) at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.javascript/main.js:1311:17) 2022-03-31 11:15:30.891 - error: javascript.0 (27079) at processImmediate (internal/timers.js:466:21) 2022-03-31 11:15:31.783 - error: tr-064.0 (26625) Cannot start callmonitor: Error: connect ECONNREFUSED 192.168.178.1:1012 2022-03-31 11:15:36.786 - error: tr-064.0 (26625) Cannot start callmonitor: Error: connect ECONNREFUSED 192.168.178.1:1012 2022-03-31 11:15:40.224 - warn: ping.0 (26599) State "ping.0.raspberrypi." has no existing object, this might lead to an error in future versions 2022-03-31 11:15:41.789 - error: tr-064.0 (26625) Cannot start callmonitor: Error: connect ECONNREFUSED 192.168.178.1:1012
Ich hatte noch einen Ordner mit linkeddevices im global Ordner unter Javascript. Diese habe ich gelöscht im Expertenmodus. Allerdings funktioniert trotzdem nichts. Daraufhin habe ich mit folgenden Befehlen versucht den .js-controller neu aufgesetzt folgendes kam dabei rum:
pi@raspberrypi:~ $ cd /opt/iobroker pi@raspberrypi:/opt/iobroker $ iobroker stop pi@raspberrypi:/opt/iobroker $ npm install iobroker.js-controller > iobroker.js-controller@4.0.21 preinstall /opt/iobroker/node_modules/iobroker.js-controller > node lib/preinstallCheck.js NPM version: 6.14.16 > iobroker.js-controller@4.0.21 install /opt/iobroker/node_modules/iobroker.js-controller > node iobroker.js setup first Successfully migrated 2437 objects to Redis Sets object _design/system updated The following notifications happened during sync: - Ignoring Directory "linkeddevices.admin" because officially not created as meta object. Please remove directory!
Allerdings habe ich die Ordner/Dateien aus global schon gelöscht und den Adapter deinstalliert.
Kann mir jemand verraten wo der Fehler liegt bzw. was ich machen kann um ihn zu finden? Hab grad alle Geräte eingerichtet und alles am laufen inkl. meiner ersten Skripte, möchte ungerne alles neu aufsetzen.
Vielen Dank im Voraus und einen wunderschönen Tag euch.
-
@kobi-0 sagte in Blockly Skripte Javascript Fehler in jedem Skript:
script.js.Eigene_Punkte.Anwesenheit
Bitte das Skript Eigene_Punkte.Anwesenheit überprüfen. Eine Variablendeklaration darf nie ohne Variablenname sein, und es darf keine Variable mit dem Namen
var
definiert werden.var = {};
Das muss so aussehen: (Was genau bei "MeinName" stehen muss hängt vom Rest des Skriptes ab.
var MeinName = {};
-
@asgothian tausend Dank für die super schnelle Rückmeldung. Hier mal der Anfang des Skriptes:
on({id: "javascript.0.scriptEnabled.Eigene_Punkte.Anwesenheit"/*Anwesenheit*/, change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val;
hatte nicht erwähnt, der Fehler kommt bei jedem Skript auf Zeile 2, wirklich bei jedem. Ich schätze mal, dass eine globale Variable irgendwo steckt. Ich denke es hat etwas mit der Fehlermeldung vom Pi: Directroy "likeddevices.admin" zutun. Allerdings wird mir kein global Ordner angezeigt, lediglich ein admin Ordner unter JS. Ich bin aber der Meinung der war schon immer da und der muss da sein, oder?
Ich hab das Skript was ich verlinkt hatte mal kopiert und versucht zu starten, allerdings zeigt er mir dann nichts an, weder Fehler noch etwas anderes.
-
@kobi-0 Schau doch mal nach ob du irgendwelche Skripte als Global definiert hast.
(Expertenansicht im JS Adapter, schauen ob im "global" Ordner ein Skript liegt.)
A.
-
@asgothian ich habe den Inahlt des Ordners global bereits gelöscht, auch den Ordner global. Liegt da der Fehler? Wenn ich unter Skripte einen neuen Ordner anlegen möchte kann ich anstelle von root als Pfad auch auswählen:
"global" und "global / linkeddevices"
Wieso gibt es global / linkeddevices ? Habe den Adapter und alles was ich in Objekten finden konnte gelöscht.Lösung:
Sorry habe nicht gewusst, dass es einen Expertenmodus für Skripte direkt gibt! Habe den Ordner linkeddevices und das Skript dort gelöscht. Nach neustart des Javascript Adapters läuft alles wieder. Tausend Dank hast mir zig Stunden Arbeit gespart und etwas neues beigebracht.
Danke