NEWS
Web-Adapter startet nach Controller-Update nicht mehr
-
Hallo zusammen,
ich habe auf meinem Raspberry Pi den js-Controller auf versaion 1.4.2 aktualisiert.
Seitdem startet der web-Adapter nicht mehr. Folgendes gibt das Log aus:
web.0 2018-09-02 13:29:04.908 error at require (internal/module.js:20:19) web.0 2018-09-02 13:29:04.908 error at Module.require (module.js:504:17) web.0 2018-09-02 13:29:04.908 error at Function.Module._load (module.js:445:3) web.0 2018-09-02 13:29:04.908 error at tryModuleLoad (module.js:453:12) web.0 2018-09-02 13:29:04.908 error at Module.load (module.js:494:32) web.0 2018-09-02 13:29:04.908 error at Object.Module._extensions..js (module.js:586:10) web.0 2018-09-02 13:29:04.908 error at Module._compile (module.js:577:32) web.0 2018-09-02 13:29:04.908 error at Object. <anonymous>(/opt/iobroker/node_modules/iobroker.js-controller/lib/letsencryptStore.js:10:11) web.0 2018-09-02 13:29:04.908 error at require (internal/module.js:20:19) web.0 2018-09-02 13:29:04.908 error at Module.require (module.js:504:17) web.0 2018-09-02 13:29:04.908 error at Function.Module._load (module.js:445:3) web.0 2018-09-02 13:29:04.908 error at tryModuleLoad (module.js:453:12) web.0 2018-09-02 13:29:04.908 error at Module.load (module.js:494:32) web.0 2018-09-02 13:29:04.908 error at Object.Module._extensions..js (module.js:586:10) web.0 2018-09-02 13:29:04.908 error at Module._compile (module.js:577:32) web.0 2018-09-02 13:29:04.908 error at Object. <anonymous>(/opt/iobroker/node_modules/safe-replace/index.js:12:27) web.0 2018-09-02 13:29:04.908 error TypeError: util.promisify is not a function web.0 2018-09-02 13:29:04.905 error uncaught exception: util.promisify is not a function</anonymous></anonymous>
util.promisify kennt er nicht. Nach recherchen gibt es das erst ab Node-JS 8.x. Mein ioBroker läuft aber unter Node-JS 6.x. Nur habe ich noch einen ioBroker unter Windows laufen (auch mit Node-JS 6) und da gibt es das Problem nicht.
Ein sudo apt-get install util.promisify hat auch nichts gebracht. Das Problem besteht auch nur wenn ich das "Benutze Let's Encrypt Zertifikate" aktiviert habe. Sonst läuft der Adapter.
Was läuft hier falsch?
-
Ist der Web Adapter sich aktuell?
Gesendet vom Handy …
-
Version 2.3.6 läuft dort (stable repository).
Edit:
Neuste Version 2.4.1 bringt den gleichen Fehler.
-
Also ich habe das Problem inzwischen identifizieren und lösen können, weiß aber noch nicht genau, warum das so bei mir ist. Da fehlt mir glaube ich noch etwas npm-Hintergrundwissen.
Ich habe mich in dem Trace-Stack mal durch den Code in den Modulen gehangelt. Letztendlich kann er ja das util.promisify nicht finden. Auslöser ist das Modul "safe-replace", welches bei mir in der Version 1.0.3 installiert ist und vermutlich Node-JS 8 braucht. Bei meiner anderen Installation ist safe-replace 1.0.2 installiert, die das eben nicht benötigt. In der package.json vom iobroker.-js-controller ist das als Dependency auch in Version 1.0.2 angegeben.
Was mir auffällt: bei meiner raspi-Installation liegen im Ordner /opt/iobroker/node_modules/ extrem viele Module (so auch safe-replace@1.0.3).
Unter /opt/iobroker/node_modules/iobroker.js-controller/node_modules/ liegt aber fast nichts.
Node-JS sucht beim Modul laden ja immer im Modul-Verzeichnis und geht dann immer eine Ebene rauf bis Global nach oben, richtig?
Ich habe jetzt ins Verzeichnis /opt/iobroker/node_modules/iobroker.js-controller/ gewechselt und safe-replace@1.0.2 installiert.
Danach kam ein neuer Fehler: gleiches mit dem Module greenlock. Da bin ich genauso vorgegangen.
Nun startet der Adapter fehlerfrei.
Aber wieso werden die Dependencies vom iobroker.js-controller in falscher Version und im falschen Verzeichnis installiert?
Wo ist der Unterschied, wenn ich cd /opt/iobroker und npm install <module>mache oder im Verzeichnis /opt/iobroker/node_module/<module>?
Es gibt ja auch noch Scopes in npm. Bei Installation von safe-replace sehe ich z.B:
iobroker.inst@1.1.2 /opt/iobroker └─┬ iobroker.js-controller@1.4.2 └─┬ pyconf@1.1.5 └── safe-replace@1.0.3 ````</module></module>
-
-
Ja, gut, dass weiß ich ja jetzt auch
.
Aber das iobroker.js-controller package hat version 1.0.2 als Dependency von safe-replace. Warum wird 1.0.3 installiert?
Andere ioBroker-Installationen hatten da bei mir keine Probleme.
-
Es hat bestimmt ^ bei der dep genutzt. Dann sind auch höhere Versionen ok.
Gesendet vom Handy …
-
Aus dem issue von oben:
„I need to update the docs (and possibly the code), but I think all you have to do is to install the polyfills and it’ll work:
npm install bluebird buffer-v6-polyfill
You may need to do require(‘buffer-v6-polyfill’) in your main file.
I’ll check on it later today.“