NEWS
[gelöst] Adapter Scope-Problem mit scheduleJob getState (ReferenceError)
-
Hi,
wie genau lautet denn der ReferenceError? Grundsätzlich strange und sollte nicht passieren.
Ansonsten hier noch ein paar Anmerkungen:
-
Die ganzen States (scheint ja recht viel und immer gleich zu sein) kannst Du auch in der io-package unter instanceObjects definieren. Dann werden die automatisch von ioBroker angelegt wenn der Adapter installiert wird. Dann sparst Du dir den Code dafür im Skript.
-
die beiden "setTimeouts" am Ende kommen mir auch etwas optimierbar vor. Falls es darum geht zu warten bis andere Dinge fertig sind am besten mit callbacks arbeiten
-
-
Die Fehlermeldung
"C:\Program Files\JetBrains\WebStorm 2018.1\bin\runnerw.exe" "C:\Program Files\nodejs\node.exe" --debug-brk=23504 --expose_debug_as=v8debug C:\ioBroker\node_modules\iobroker.husq-automower\main.js --force --log Debugger listening on [::]:23504 ReferenceError: idnLastdayLocations is not defined at Socket. <anonymous>(C:\ioBroker\node_modules\iobroker.husq-automower\main.js:859:30) at Socket.onack (C:\ioBroker\node_modules\iobroker.js-controller\node_modules\socket.io-client\lib\socket.js:316:9) at Socket.onpacket (C:\ioBroker\node_modules\iobroker.js-controller\node_modules\socket.io-client\lib\socket.js:241:12) at Manager. <anonymous>(C:\ioBroker\node_modules\iobroker.js-controller\node_modules\component-bind\index.js:21:15) at Manager.Emitter.emit (C:\ioBroker\node_modules\iobroker.js-controller\node_modules\component-emitter\index.js:133:20) at Manager.ondecoded (C:\ioBroker\node_modules\iobroker.js-controller\node_modules\socket.io-client\lib\manager.js:345:8) at Decoder. <anonymous>(C:\ioBroker\node_modules\iobroker.js-controller\node_modules\component-bind\index.js:21:15) at Decoder.Emitter.emit (C:\ioBroker\node_modules\iobroker.js-controller\node_modules\component-emitter\index.js:133:20) at Decoder.add (C:\ioBroker\node_modules\iobroker.js-controller\node_modules\socket.io-parser\index.js:251:12) at Manager.ondata (C:\ioBroker\node_modules\iobroker.js-controller\node_modules\socket.io-client\lib\manager.js:335:16) Process finished with exit code 6</anonymous></anonymous></anonymous>
Das mit dem setTimeout kann wahrscheinlich direkt erfolgen, ansonsten baue ich das noch um.
Ja, die States hatte ich erst in der io-package, aber die Lösung im Skript finde ich besser pflegbar und außerdem kann ich da gleich meine Initialen Werte setzen, was letztendlich den Ausschlag gab. Denke per io-package geht das nicht.
-
Die Fehlermeldung
"C:\Program Files\JetBrains\WebStorm 2018.1\bin\runnerw.exe" "C:\Program Files\nodejs\node.exe" --debug-brk=23504 --expose_debug_as=v8debug C:\ioBroker\node_modules\iobroker.husq-automower\main.js --force --log Debugger listening on [::]:23504 ReferenceError: idnLastdayLocations is not defined at Socket. <anonymous>(C:\ioBroker\node_modules\iobroker.husq-automower\main.js:859:30) at Socket.onack (C:\ioBroker\node_modules\iobroker.js-controller\node_modules\socket.io-client\lib\socket.js:316:9) at Socket.onpacket (C:\ioBroker\node_modules\iobroker.js-controller\node_modules\socket.io-client\lib\socket.js:241:12) at Manager. <anonymous>(C:\ioBroker\node_modules\iobroker.js-controller\node_modules\component-bind\index.js:21:15) at Manager.Emitter.emit (C:\ioBroker\node_modules\iobroker.js-controller\node_modules\component-emitter\index.js:133:20) at Manager.ondecoded (C:\ioBroker\node_modules\iobroker.js-controller\node_modules\socket.io-client\lib\manager.js:345:8) at Decoder. <anonymous>(C:\ioBroker\node_modules\iobroker.js-controller\node_modules\component-bind\index.js:21:15) at Decoder.Emitter.emit (C:\ioBroker\node_modules\iobroker.js-controller\node_modules\component-emitter\index.js:133:20) at Decoder.add (C:\ioBroker\node_modules\iobroker.js-controller\node_modules\socket.io-parser\index.js:251:12) at Manager.ondata (C:\ioBroker\node_modules\iobroker.js-controller\node_modules\socket.io-client\lib\manager.js:335:16) Process finished with exit code 6</anonymous></anonymous></anonymous> ```` `
Kannst Du bitte Code auf Github updaten … Da ist die zeile was ganz anderes.
Strange ist in jedem Fall der Stacktrace hier ... Wie genau löst Du das aus? WO setzt du den Timer dafür?
Ja, die States hatte ich erst in der io-package, aber die Lösung im Skript finde ich besser pflegbar und außerdem kann ich da gleich meine Initialen Werte setzen, was letztendlich den Ausschlag gab. Denke per io-package geht das nicht. `
Doch ab js-controller 1.5.0 wird es gehen "common.def" kann man dann leere States auf initialwerte setzen. -
Die Fehlermeldung
"C:\Program Files\JetBrains\WebStorm 2018.1\bin\runnerw.exe" "C:\Program Files\nodejs\node.exe" --debug-brk=23504 --expose_debug_as=v8debug C:\ioBroker\node_modules\iobroker.husq-automower\main.js --force --log Debugger listening on [::]:23504 ReferenceError: idnLastdayLocations is not defined at Socket. <anonymous>(C:\ioBroker\node_modules\iobroker.husq-automower\main.js:859:30) at Socket.onack (C:\ioBroker\node_modules\iobroker.js-controller\node_modules\socket.io-client\lib\socket.js:316:9) at Socket.onpacket (C:\ioBroker\node_modules\iobroker.js-controller\node_modules\socket.io-client\lib\socket.js:241:12) at Manager. <anonymous>(C:\ioBroker\node_modules\iobroker.js-controller\node_modules\component-bind\index.js:21:15) at Manager.Emitter.emit (C:\ioBroker\node_modules\iobroker.js-controller\node_modules\component-emitter\index.js:133:20) at Manager.ondecoded (C:\ioBroker\node_modules\iobroker.js-controller\node_modules\socket.io-client\lib\manager.js:345:8) at Decoder. <anonymous>(C:\ioBroker\node_modules\iobroker.js-controller\node_modules\component-bind\index.js:21:15) at Decoder.Emitter.emit (C:\ioBroker\node_modules\iobroker.js-controller\node_modules\component-emitter\index.js:133:20) at Decoder.add (C:\ioBroker\node_modules\iobroker.js-controller\node_modules\socket.io-parser\index.js:251:12) at Manager.ondata (C:\ioBroker\node_modules\iobroker.js-controller\node_modules\socket.io-client\lib\manager.js:335:16) Process finished with exit code 6</anonymous></anonymous></anonymous>
Das mit dem setTimeout kann wahrscheinlich direkt erfolgen, ansonsten baue ich das noch um.
Ja, die States hatte ich erst in der io-package, aber die Lösung im Skript finde ich besser pflegbar und außerdem kann ich da gleich meine Initialen Werte setzen, was letztendlich den Ausschlag gab. Denke per io-package geht das nicht. `
Day hast du einmal gross und einmal klein geschrieben
-
Der Code ist aktualisiert, für den Test mache ich das mit setTimeout als letzte Anweisung in Main.
Den Fehler bekomme ich per WebStorm oder auch beim Start als ioBroker-Adapter, dann erst um Mitternacht (ohne den Testtimer). Da war mir der Fehler im Log aufgefallen.
Ist ein eigener Schedule in einem Adapter erlaubt? Habe sonst keine andere Möglichkeit gefunden, um Mitternacht jeweils etwas laufen zu lassen.
Wahrscheinlich wichtig auch die Umgebung:
-
Windows10
-
node v6.14.2
-
ioBroker aktuell aus latest
-
-
Day hast du einmal gross und einmal klein geschrieben `
Ich wundere mich manchmal wirklich über die eigene Code-Blindheit.Ich danke euch ganz dolle :ugeek:
-
Ich hätte da noch eine Anmerkung zur Verwendung von 'var'. Das ist eigentlich veraltet und wurde in ES6 durch 'let' und 'const' ersetzt. Der Grund ist das var nicht klar abgrenzt wo die Variable dann abgegriffen werden kann.
let und const sind immer nur innerhalb eines Blocks verfügbar. So kann man auch den selben variablen Namen öfter definieren ohne das man gleich ein Problem hat.
Generell empfehle ich sich mit ES6 auseinander zu setzen das es viele Änderungen gebracht hat.
ES = Ecma Script was der Name für den Standard von JavaScript ist.
Gesendet von meinem m8 mit Tapatalk
-
Day hast du einmal gross und einmal klein geschrieben `
Ich wundere mich manchmal wirklich über die eigene Code-Blindheit.Ich danke euch ganz dolle :ugeek: `
Mit der Blindheit schliesse ich mich an … und verfluche die Firefox websuche das die im Standard Not-Case-Sensitive sucht
-
Und noch mal eine andere Frage, gab es hier nicht mal einen Danke-Button zu den einzelnen Beiträgen?
-
Doch gab es, das Plugin ist nicht mehr Kompatibel mit der Foren Software.
Gesendet von meinem m8 mit Tapatalk