NEWS
nodejs-update - post-install Check?
-
Da ich nicht weiß ob / wo nodejs-update ein Repository für Issues hat hier eine Anregung zur Diskussion.
Man nehme folgende Situation:
Ein System ist fehlerfrei installiert. Node.js 20 ist dort im Einsatz. Auch ein Adapter (konkret yahka) ist installiert. Alles läuft einwandfrei.Der User aktualisisert nun node.js auf 22. Dabei kommt es zu keinen Fehlermeldungen und auch das System läuft bzw. scheint zu laufen. Zumindest bemerkt mal der User nichts.
Und nun versucht der User irgendeinen Adapter zu aktualisieren. Bums - Fehlermeldung dass eine Dependency eines ganz anderen Adapters nicht erfüllt ist da diese Dependency node.js <=20 erfordert.
Hintergrund:
yahka (1.1.4) hat als dependency 'hap-nodejs@1.1.0' welches node 18 oder 20 verlangt.
Anregung:
Da es wohl nicht vor einem node.js Update möglich ist ob die dependencies aller installierten Adapter diesen Update erlauben, rege an zu überlegen, ob NACH der Installation der neuen node-js Version direkt in nodejs-update getestet werden könnte ob noch alles passt. Das hätte den Vorteil, dass der User den Zusammenhang zum node-js Update sofort gemeldet bekommt und entsprechend reagieren kann (Update von Adapter, notfalls Downgrade von node.js).
Erkennbar wäre dies m.E. durch einen Aufruf von 'npm i --dry-run'.
Ich habe das in folgendem scenario getestet:
- node.js 20 installiert
- yahka 1.1.4 installiert
- node.js auf 22 aktualisiert
npm i --dry-run liefert mir dann eine klare Fehlermeldung:
C:\ioBroker>npm i --dry-run npm warn EBADENGINE Unsupported engine { npm warn EBADENGINE package: 'hap-nodejs@1.1.0', npm warn EBADENGINE required: { node: '^18 || ^20' }, npm warn EBADENGINE current: { node: 'v22.16.0', npm: '10.9.2' } npm warn EBADENGINE } add fsevents 2.3.3 added 1 package in 3s 173 packages are looking for funding run `npm fund` for details C:\ioBroker>
Bitte einfach mal drüber nachdenken. Diese Posting soll eine Diskussionsanregung sein. Kann gut sein, dass ich wichtige Dinge, auch KO Kriterien, übersehen habe.
Kommentare sind herzlich willkommen.
Meine Intention ist dem User so früh wie möglich zu informieren dass auf seinem System was zu tun ist. Derzeit ist es proaktiv kaum möglich so eine Situation zu erkennen und ein unerfahrener User wundert sich dass er (wie im Anlassfall aufgetreten) beim Installieren von backitup eine Fehlermeldung von yahka / hap-node kommt und kennt sich nur bedingt aus.
mcm1957
-
Kann man natürlich einbauen.
Viel wichtiger ist es allerdings diese Kinken zu finden und auszuräumen, bevor nodejs@22 zur offiziellen Empfehlung wird. -
YAHKA ist bekannt. (https://github.com/jensweigele/ioBroker.yahka/issues/501). Wanns gefixed isgt / wird kann nur der Maintainer sagen.
Obs noch weitere gibt - keine Ahnung.
Auch keine Ahnung wie das testbar wäre...Aber check mal ob so ein psot INstall check sinnvoll ist oder du mit deinem Wissen Nebenwirkungen findest. Ev. kann der ja auch andere npm Tree Probleme aufzeigen. Er sollte nur nichts verändern oder instalieren. Das müßte aber durch --dry-run eigentlich sichergestellt sein.
-
@mcm1957
Hab mal auf die Schnelle was gecodet:
Im positiven Fall schaut es dann so oder so ähnlich aus:CHECKING FOR COMPATIBILITY NOW! add node-aead-crypto-win32-x64-msvc 3.0.1 add node-aead-crypto-win32-ia32-msvc 3.0.1 add node-aead-crypto-win32-arm64-msvc 3.0.1 add node-aead-crypto-linux-x64-musl 3.0.1 add node-aead-crypto-linux-x64-gnu 3.0.1 add node-aead-crypto-linux-arm-gnueabihf 3.0.1 add node-aead-crypto-darwin-x64 3.0.1 add node-aead-crypto-darwin-universal 3.0.1 add node-aead-crypto-darwin-arm64 3.0.1 add node-aead-crypto-android-arm64 3.0.1 add node-aead-crypto-android-arm-eabi 3.0.1 add fsevents 2.3.3 added 12 packages in 8s 267 packages are looking for funding run `npm fund` for details We tried our best to fix your nodejs. Please run iob diag again to verify.
Im Fehlerfall dann so:
CHECKING FOR COMPATIBILITY NOW! npm error code EBADENGINE npm error engine Unsupported engine npm error engine Not compatible with your version of node/npm: hap-nodejs@1.1.0 npm error notsup Not compatible with your version of node/npm: hap-nodejs@1.1.0 npm error notsup Required: {"node":"^18 || ^20"} npm error notsup Actual: {"npm":"10.9.2","node":"v22.16.0"} npm error A complete log of this run can be found in: /home/echad/.npm/_logs/2025-05-27T20_36_15_751Z-debug-0.log We tried our best to fix your nodejs. Please run iob diag again to verify. *** RESTARTING ioBroker NOW! *** Please refresh or restart your browser in a few moments.
Im Terminal dann halt error in rot, damit man es auch sieht. Ich muss mal schauen, ob man die Fehlermeldungen auch noch genauer auswerten kann und dann eine Handlungsanweisung/Nachfrage wie:
Die gerade installierte Version ist nicht mit allen Adaptern kompatibel. Soll die vorherige Version wieder installiert werden?
kommt.
-
-
@thomas-braun
Ich frag mich warum npm da gerne Pakete installieren würde. Das könnte ev. User verwirren.
Auf meinem Testsystem würde npm auch gerne iobroker.inst@x.y.z installieren - warum aus immer.Ev. kann man da noch was mit dem Status machen, hab das nicht angeschaut. Oder auf NPM error filter. Aber da hast du sicher die bessren Ideen was da sinnvoll ist.
-
@mcm1957 sagte in nodejs-update - post-install Check?:
Ich frag mich warum npm da gerne Pakete installieren würde.
Hab ich mich auch gefragt...
Muss mich mal näher mit npm und was da so an Feinheiten möglich ist beschäftigen.
Fürfsevents
findet man aber:echad@chet:/opt/iobroker $ npm why fsevents fsevents@2.3.3 optional node_modules/fsevents optional fsevents@"~2.3.2" from chokidar@3.6.0 node_modules/chokidar chokidar@"^3.5.3" from @iobroker/js-controller-cli@7.0.7 node_modules/@iobroker/js-controller-cli @iobroker/js-controller-cli@"7.0.7" from iobroker.js-controller@7.0.7 node_modules/iobroker.js-controller iobroker.js-controller@"7.0.7" from the root project echad@chet:/opt/iobroker $
-
@thomas-braun
Frag mich nur warum dass dann nicht bei js-controlelr installtion installiert wird.
Aber npm ist manchmal (?) ein Rätsel. -
Weil es wohl nur optional ist. Vielleicht hat man da da Policy in aktuellen Versionen umgestellt und man zieht die nun doch rein? Muss mich da mal genauer in die Doku knien.