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?
-
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> -
-
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.“
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden