NEWS
On(RegExp) Problem
-
Hallo mitsammen!
Hatte vor 1-2 Tagen meinen test/development-Raspi3 mit Jessie upgedated (den Kernel wie auch apt-get …).
Damit wurde unter anderem auch ein neues nodejs v4.7.3 installiert.
Nun, es hat alles weiter funktioniert und ich habe an einem script geschrieben welches ich auch bald veröffentlichen werde (eine 'StateMachine').
Dann hab ich ein on('xxx', x => y); eingebaut und es hat weiter wunderbar funktioniert.
Nun, dann hab ich on(/regexp/, x => y); verwendet und dann stürzt das System (js-controller?) komplett ab und ioBroker (und alle Adapter) restarten!
Die Fehlermeldung ist:
iobroker 2017-02-06 20:57:30.748 info _restart TypeError: 2017-02-06 20:57:30.745 error at process._tickCallback (node.js:365:13) TypeError: 2017-02-06 20:57:30.745 error at nextTickCallbackWith0Args (node.js:436:9) TypeError: 2017-02-06 20:57:30.745 error at /opt/iobroker/node_modules/socket.io/lib/socket.js:503:12 TypeError: 2017-02-06 20:57:30.745 error at Socket.emit (events.js:172:7) TypeError: 2017-02-06 20:57:30.745 error at emitTwo (events.js:87:13) TypeError: 2017-02-06 20:57:30.745 error at Socket. (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInMemServer.js:388:28) TypeError: 2017-02-06 20:57:30.745 error at Socket.StatesInMemory.subscribe (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInMemServer.js:670:9) TypeError: 2017-02-06 20:57:30.745 error at subscribe (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInMemServer.js:294:53) TypeError: 2017-02-06 20:57:30.745 error at pattern2RegEx (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInMemServer.js:279:27) TypeError: 2017-02-06 20:57:30.745 error pattern.replace is not a function uncaught 2017-02-06 20:57:30.734 error exception: pattern.replace is not a function
Meine Adapter sind up-to-date:
!
Adapter "xs1" : 0.5.2 , installed 0.5.2 Adapter "web" : 2.0.0 , installed 2.0.0 Adapter "vis-rgraph" : 0.0.2 , installed 0.0.2 Adapter "vis-hqwidgets" : 1.0.6 , installed 1.0.6 Adapter "vis-history" : 0.2.4 , installed 0.2.4 Adapter "vis" : 0.10.15 , installed 0.10.15 Adapter "socketio" : 1.7.4 , installed 1.7.4 Adapter "sql" : 1.4.3 , installed 1.4.3 Adapter "simple-api" : 1.3.0 , installed 1.3.0 Adapter "scenes" : 0.2.6 , installed 0.2.6 Adapter "sayit" : 1.4.0 , installed 1.4.0 Adapter "rpi2" : 0.3.1 , installed 0.3.1 Adapter "rickshaw" : 0.4.4 , installed 0.4.4 Adapter "radar" : 0.7.3 , installed 0.7.3 Adapter "node-red" : 1.1.6 , installed 1.1.6 Adapter "mqtt" : 1.3.0 , installed 1.3.0 Controller "js-controller" : 0.15.3 , installed 0.15.3 Adapter "javascript" : 3.2.4 , installed 3.2.4 Adapter "icons-open-icon-library-png": 0.1.3 , installed 0.1.3 Adapter "icons-icons8" : 0.0.1 , installed 0.0.1 Adapter "hm-rpc" : 1.4.1 , installed 1.4.1 Adapter "fritzbox" : 0.2.1 , installed 0.2.1 Adapter "flot" : 1.5.6 , installed 1.5.6 Adapter "email" : 1.0.2 , installed 1.0.2 Adapter "cul" : 0.2.2 , installed 0.2.2 Adapter "cloud" : 0.6.3 , installed 0.6.3 Adapter "admin" : 1.6.11 , installed 1.6.11 !
Auch bei einem testscript welches ausschließlich das on-statement mit RegExp (egal ob mit id: new Regexp oder mit //) besteht stürzt iobroker ab sobald das Ereignis eintritt, also die Funktion in dem on-statement aufgerufen werden würde.
Auf meinem Produktionssystem mit nodejs 6.9.5 funktioniert es anstandslos!
Kann das mal wer mit 4.7.3 oder 4.7.x testen?
Werde mich morgen anschicken und iobroker samt Adapter neu zu installieren und nochmal zu testen, ist ja eh die Testmaschine
und dann später berichten ob der Fehler wegging.
-
Ich war am Verzweifeln!
Auf dem Testsystem (mit 4.x.x) gibt's die Abstürze wenn ich RegExp verwende und am Production-System (mit 6x.x.) zwar keinen Absturz aber sie funktionieren trotzdem nicht!
Kein einziger Event wird ausgelöst, weder wenn ich 'name.*' noch /name/ noch sonst irgend ein RegExp verwende, auf keinem der Systeme!
Sobald ich als id einen String mit den genauen Angaben wie 'javascript.1.xxx' angebe funktioniert alles (bzw all diese events).
Nun hab ich mal gecheckt und festgestellt dass:
Wenn ich das Häkchen im Adapter "Nicht auf alle Zustände beim Start abonnieren" setzte dann funktioniert kein Regexp/und am anderen System stürzt ioBroker komplett ab.
Setzte ich das Häkchen nicht: Funktioniert alles!
Was soll das eigentlich einschränken? Ich wollte nur dass nicht alles automatisch aboniert wird aber ich sollte ja trotzdem noch im script abonnieren können?
Egal, Häkchen (und ein Tag Test) weg, nun gehts weiter im script…
-
@fsjoke:Was soll das eigentlich einschränken? Ich wollte nur dass nicht alles automatisch aboniert wird aber ich sollte ja trotzdem noch im script abonnieren können? `
Abstürzen darf natürlich nichts. Beschrieben ist die Option hier: https://github.com/ioBroker/ioBroker.ja … s-on-start