NEWS
knx adapter: fehlendes axios paket nach iobroker upgrade
-
Hallo Zusammen,
mein iobroker lief nun etwa über 2 Jahre tadellos und da mir die Zeit für ein größeres Update fehlte, alles intern genutzt wird und nichts nach außen geht habe ich mich auch nicht großartig um Updates bemüht. Am letzten Wochenende habe ich nun ein größeres Update durchgeführt und alles auf den aktuellen Stand gebracht. Tatsächlich lief anschließend auch alles ohne Fehler im log o.ä. - ok die Vis musste ich anpassen, aber nichts dramatisches. Natürlich wurde dabei auch der Server mehrfach neu gestartet.
Gestern, also gut 4 Tage nach dem Update Sprung, habe ich dann in einem script das axios paket eingebunden um einen http call durchzuführen, weil auch hier noch wget bzw. request im Einsatz war. So far so good auch das lief ohne probleme. Nun wird mein Server jede Nacht einem automatischen Backup unterzogen und um 2 Uhr automatisch runtergefahren. Heute morgen dann der interessante Fehler: Ich kann keine Ansteuerung via KNX mehr vornehmen.
Ich prüfe also das log und da steht:
2024-11-14 00:01:45.317 - error: host.server2 Caught by controller[0]: node:internal/modules/cjs/loader:1228 2024-11-14 00:01:45.318 - error: host.server2 Caught by controller[0]: throw err; 2024-11-14 00:01:45.318 - error: host.server2 Caught by controller[0]: ^ 2024-11-14 00:01:45.318 - error: host.server2 Caught by controller[0]: Error: Cannot find module 'axios' 2024-11-14 00:01:45.318 - error: host.server2 Caught by controller[0]: Require stack: 2024-11-14 00:01:45.318 - error: host.server2 Caught by controller[0]: - /opt/iobroker/node_modules/iobroker.knx/knx.js 2024-11-14 00:01:45.318 - error: host.server2 Caught by controller[0]: at Module._resolveFilename (node:internal/modules/cjs/loader:1225:15) 2024-11-14 00:01:45.318 - error: host.server2 Caught by controller[0]: at Module._load (node:internal/modules/cjs/loader:1051:27) 2024-11-14 00:01:45.318 - error: host.server2 Caught by controller[0]: at Module.require (node:internal/modules/cjs/loader:1311:19) 2024-11-14 00:01:45.318 - error: host.server2 Caught by controller[0]: at require (node:internal/modules/helpers:179:18) 2024-11-14 00:01:45.318 - error: host.server2 Caught by controller[0]: at _0x4fce94 (/opt/iobroker/node_modules/iobroker.knx/knx.js:1:40641) 2024-11-14 00:01:45.318 - error: host.server2 Caught by controller[0]: at /opt/iobroker/node_modules/iobroker.knx/knx.js:1:41017 2024-11-14 00:01:45.318 - error: host.server2 Caught by controller[0]: at Object. (/opt/iobroker/node_modules/iobroker.knx/knx.js:1:379770) 2024-11-14 00:01:45.318 - error: host.server2 Caught by controller[0]: at Object. (/opt/iobroker/node_modules/iobroker.knx/knx.js:1:441453) 2024-11-14 00:01:45.318 - error: host.server2 Caught by controller[0]: at 9../lib/easy-knx/easy-knx.js (/opt/iobroker/node_modules/iobroker.knx/knx.js:1:441480) 2024-11-14 00:01:45.318 - error: host.server2 Caught by controller[0]: at _0x4fce94 (/opt/iobroker/node_modules/iobroker.knx/knx.js:1:40917) { 2024-11-14 00:01:45.318 - error: host.server2 Caught by controller[0]: code: 'MODULE_NOT_FOUND', 2024-11-14 00:01:45.318 - error: host.server2 Caught by controller[0]: requireStack: [ '/opt/iobroker/node_modules/iobroker.knx/knx.js' ] 2024-11-14 00:01:45.318 - error: host.server2 Caught by controller[0]: } 2024-11-14 00:01:45.318 - error: host.server2 Caught by controller[0]: Node.js v20.18.0 2024-11-14 00:01:45.318 - error: host.server2 instance system.adapter.knx.0 terminated with code 1 (JS_CONTROLLER_STOPPED)
Verstehe ich nicht warum ihm auf einmal das package fehlt. Weitere updates sind nicht gelaufen und ich hab lediglich axios im javascript adapter eingesetzt. Dort funktioniert auch alles. Bei mir läuft iobroker im docker container, also habe ich ein
npm install --production
unter/node_modules/iobroker.knx
versucht, leider ohne erfolg. Da ich von Berufswegen Softwareentwickler bin habe ich diepackage.json
geprüft. Im Adapter wird das axios Modul nicht als dependency gesetzt, deshalb gehe ich davon aus, dass es ein anderes Modul, wie z.B. den js-controller, betrifft und darüber eingebunden wird? Aber warum klappt es dann im script selbst?Long story short: Ich habe mittels
npm i axios
unter/node_modules/iobroker.knx
dafür gesorgt dass der Fehler nicht mehr auftritt. Allerdings ist das natürlich ein workaround und ich würde gerne die Ursache des Problems verstehen und beheben, um anschließend den workaround zu entfernen.Ein paar Eckdaten aus den Statistics:
{ "language": "en", "country": "Germany", "hosts": [ { "version": "6.0.11", "platform": "Javascript/Node.js", "type": "linux" } ], "node": "v20.18.0", "arch": "x64", "docker": true, "adapters": { "admin": { "version": "7.1.5", "platform": "Javascript/Node.js", "installedFrom": "iobroker.admin@7.1.5" }, "discovery": { "version": "5.0.0", "platform": "Javascript/Node.js", "installedFrom": "iobroker.discovery@5.0.0" }, "info": { "version": "1.9.26", "platform": "Javascript/Node.js", "installedFrom": "iobroker.info@1.9.26" }, "knx": { "version": "2.0.28", "platform": "Javascript/Node.js", "installedFrom": "iobroker.knx@2.0.28" }, "javascript": { "version": "8.8.3", "platform": "Javascript/Node.js", "installedFrom": "iobroker.javascript@8.8.3" }, "telegram": { "version": "3.9.0", "platform": "Javascript/Node.js", "installedFrom": "iobroker.telegram@3.9.0" }, "ical": { "version": "1.15.0", "platform": "Javascript/Node.js", "installedFrom": "iobroker.ical@1.15.0" }, "web": { "version": "6.2.5", "platform": "Javascript/Node.js", "installedFrom": "iobroker.web@6.2.5" }, "jarvis": { "version": "3.1.8", "platform": "Javascript/Node.js", "installedFrom": "iobroker.jarvis@3.1.8" }, "backitup": { "version": "3.0.25", "platform": "Javascript/Node.js", "installedFrom": "iobroker.backitup@3.0.25" }, "simple-api": { "version": "2.8.0", "platform": "Javascript/Node.js", "installedFrom": "iobroker.simple-api@2.8.0" }, "alias-manager": { "version": "1.2.6", "platform": "Javascript/Node.js", "installedFrom": "iobroker.alias-manager@1.2.6" }, "daswetter": { "version": "3.1.16", "platform": "Javascript/Node.js", "installedFrom": "iobroker.daswetter@3.1.16" }, "dwd": { "version": "2.8.5", "platform": "Javascript/Node.js", "installedFrom": "iobroker.dwd@2.8.5" }, "sonos": { "version": "3.0.0", "platform": "Javascript/Node.js", "installedFrom": "iobroker.sonos@3.0.0" }, "history": { "version": "3.0.1", "platform": "Javascript/Node.js", "installedFrom": "iobroker.history@3.0.1" }, "worx": { "version": "3.1.0", "platform": "Javascript/Node.js", "installedFrom": "iobroker.worx@3.1.0" }, "socketio": { "version": "6.7.1", "platform": "Javascript/Node.js", "installedFrom": "iobroker.socketio@6.7.1" } }, "statesType": "jsonl", "objectsType": "jsonl", "noInstances": 15, "compactMode": false, "noCompactInstances": 0, "model": "Common KVM processor", "cpus": 4, "mem": 8326438912, "ostype": "Linux" }
Bin dankbar für insights, liebe grüße
-
der Dev geht von aus dass es mit anderem Adapter schon installiert ist.. falsch gedacht..
-
Na ja ich habe mich bisher noch nicht mit dem konkreten Aufbau der Adapter und des core's vom iobroker beschäftigen müssen
Aber wenn das so ist, warum fehlt dann das package in den dependencies vom adapter? Ich meine das nachträgliche installieren des package ist ja dann kein workaround, sondern notwendig. -
@tkr ja es sollte da rein..mach ein issue auf GIT