NEWS
Probleme bei Update auf Node.js 16.15.1 unter Windows
-
@apollon77 Hilft leider nicht wirklich. Ich würde aber mal aus dem Bauch raus sagen ist ein Problem der aktuellen NodeJS 16.18.0.
Ich werden dann mit dem Update erst mal auf eine neuere NodeJS warten. -
-
@apollon77 Sorry meinte 16.18.0
-
Hab das selbe Problem.
Bei mir steht folgendes im IOB Log:A system error occurred: uv_uptime returned EPERM (operation not permitted)
SystemError [ERR_SYSTEM_ERROR]: A system error occurred: uv_uptime returned EPERM (operation not permitted)
at C:\Software\iobroker\SmartHome\node_modules\pidusage\lib\wmic.js:65:34
at ChildProcess.<anonymous> (C:\Software\iobroker\SmartHome\node_modules\pidusage\lib\bin.js:44:5)
at ChildProcess.emit (node:events:513:28)
at maybeClose (node:internal/child_process:1100:16)
at Socket.<anonymous> (node:internal/child_process:458:11)
at Socket.emit (node:events:513:28)
at Pipe.<anonymous> (node:net:301:12)
object system.meta.uuid cannot be updated: Error: DB closedGibts schon eine Lösung ?
Nachtrag:
Hab es jetzt auch mit dem Installer von nodejs gemacht.Vorher den alten iobroker Ordner umbennant und mit "sc delete iobroker(SmartHome)" in der command von Windows den alten Dienst entfernt.
Dann ioBroker über die node Console mit "npx @iobroker/install" neu installiert (Zielordner muß leer sein). Dies ging dann erstmal schief weil der Port 9001 durch eine java Installation blockiert war, danach lief die Installation durch.
Anschließend IOB wieder beendet und den "iobroker-data" Ordner von der alten Installation hineinkopiert.
Dann iob wieder gestartet und in der Firewall noch node.exe und iobroker.exe öffentlich freigeben.
Im IOBroker wurden dann die Adapter nach und nach wieder installiert. -
@bernd1967 Habe Das Problem auch mit einer Neuistallation gelöst, bei mir wars dann gleich verbunden mit einem Umzug auf einen anderen Rechner. https://forum.iobroker.net/post/875377
Habe die neue Installation mitlerweile auf Node.js: v16.18.1, NPM: 8.19.2 geupdated. -
Ich hatte auch den fehler bei dem upgrade auf 16.19.0:
SystemError [ERR_SYSTEM_ERROR]: A system error occurred: uv_uptime returned EPERM (operation not permitted)
Danke für den tip mit der version 16.17.1. Die tut es auch erstmal. Hoffe der Fehler wird bei den nächsten versionen gefixt.
-
Danke für diesen Thread. Hatte auch heute Morgen ein Update auf 16.19.0 versucht und dann zum Glück den Tipp hier gefunden, 16.17.1 zu versuchen. Jetzt läuft ioBroker erstmal unter 16.17.1.
Hat jemand eine plausible Erklärung oder gar eine Idee, wie man das für die Zukunft ohne Neuinstallation in den Griff bekommen könnte?
-
@gaspode Ich habe mittlerweile auf Node v16.19.0 geupdatet. Wichtig zuvor iobroker zu stoppen. Dann habe ich die alte Node Version deinstalliert und die neue installiert. Läuft...
-
Also ich habe auch vor ein paar Tagen auf die 16.19.0 upgedatet. Ich mache das immer wie folgt:
- iobroker Dienst stoppen
- Neue Node Version herunterladen (https://nodejs.org/en/download/releases/) und einfach in das gleiche Verzeichnis installieren, wo es vorher auch lag (Standardverzeichnis bei mir: C:\Program Files\nodejs)
Ich starte dann nach der Installation einmal den kompletten Server durch, so hat es die letzten Male immer funktioniert bei mir. Die NPM Version hängt ja immer mit an der Node Installation und ist nach der Installation auf 16.19.0 auch auf 8.19.3 gesprungen.
-
Das Problem scheint ja nur Instanzen zu betreffen, die mit dem "alten" Installer von @Stabilostick installiert wurden. Da wurde Node.js nicht installiert, sondern wohl nur kopiert. Auf diese Weise kann man auf dem gleichen Rechner mehrere ioBroker Instanzen mit unterschiedlichen Node.js Versionen laufen haben. Es gibt also kein Node.js, das man deinstallieren und neu installieren könnte.
Daher musste man Node.js manuell austauschen, und bis Version 16.17.1 hat das auch problemlos funktioniert. Seit 16.18.1 funktioniert das seltsamerweise nicht mehr. die Frage ist: Warum? -
@gaspode sagte in Probleme bei Update auf Node.js 16.15.1 unter Windows:
Das Problem scheint ja nur Instanzen zu betreffen, die mit dem "alten" Installer von @Stabilostick installiert wurden.
Ja stimmt, bei der alten Installation hatte ich auch das Problem mit dem Node Update. Bin dann umgezogen auf einen neuen Rechner mit neuer Installationsmethode (nicht mehr Instanzen) dort ist das Update wie oben beschrieben dann möglich.
-
Die Lösung ohne Neuinstallation gibt es hier:
https://forum.iobroker.net/post/924525Edit: Das betrifft leider nur die, die Probleme mit Node.js Versionen neuer als 16.17.1 haben. Für das Ausgangsproblem in diesem Thread ist das auch nicht die Lösung. Sorry für die Verwirrung.
-
@gaspode sagte in Probleme bei Update auf Node.js 16.15.1 unter Windows:
Die Lösung ohne Neuinstallation gibt es hier:
https://forum.iobroker.net/post/924525Hi,
da ich jetzt dann meine alte Windows Iobroker Version doch irgendwann mal auf Node 16 bringen will, wollte ich nochmal fragen.
Also ich habe ja wie gesagt eine alte Installation, Nodejs wurde nicht mit einer MSI installiert.Wie bist du genau vorgegangen?
- ioBroker stoppen
- Node.js downloaden und die MSI installieren
(In welches Verzeichnis? Das vorhande C:\iobroker\nodjs oder das vorgeschlagene unter c:\programme?) - In Windows das Dienste-Fenster ("Services") als Admin öffnen und den ioBroker Dienst suchen.
Eigenschaften des Dienstes öffnen und auf die Seite "Anmelden" wechseln.
Dort das Häkchen bei "Lokales Systemkonto" setzen, "Dieses Konto" wird dadurch deselektiert - Iobroker neustarten
Danke im Voraus.
-
@nik82 said in Probleme bei Update auf Node.js 16.15.1 unter Windows:
Wie bist du genau vorgegangen?
Das hängt davon ab, wie du ioBroker installiert hast. Hier geht es ja um den "alten Installer" von Stabilostick.
Wenn du den verwendet hast, dann darfst du node.js NICHT per Installer installieren, sonder noed.js als ZIP File herunterladen.
Ich habe hier einiges dazu beschrieben: ioBroker unter Windows - Eine Anleitung und ein Rückblick
Da ist allerdings die komplette Neuinstallation beschrieben, ich habe dir mal die Schritte für das reine Nofe.js Update zusammengefasst:
Ich habe mich bemüht, die manuellen Schritte möglichst einfach mit wenig Potential für Missverständnisse zu beschreiben. Deshalb nutze ich bevorzugt Kommandos, die in der ioBroker Kommandozeile einzutippen sind.
In diesem Beispiel ist ioBroker im Verzeichnis F:\iobroker\SmartHome mit dem Namen SmartHome installiert.
Diese Anleitung geht davon aus, dass ein aktuelles Windows 10 System verwendet wird. Bei (sehr viel) älteren Windows 10 Versionen oder gar Windows 7 werden die unten verwendeten Tools tar und curl nicht funktionieren. Diese Schritte müsstet ihr dann "per Hand" ausführen. Aber wie gesagt, auf einem aktuellen System ist alles an Bord, was man für diese Anleitung braucht.
Im Startmenü gibt es einen neuen Eintrag im Ordner ioBroker mit dem Namen "ioBroker(<Name der Instanz>) Kommandozeile". In meinem Fall heißt der Eintrag also "ioBroker (SmartHome) Kommandozeile".
Diesen Startmenü-Eintrag starten wir jetzt, es erscheint ein Cmd Fenster (evtl. müssen wir zunächst das Administrator Passwort des PCs eingeben, da die ioBroker Kommandozeile als Administrator ausgeführt wird).********************************************************** *** Welcome to ioBroker. *** *** *** *** Type 'iobroker help' for list of instructions. *** *** For more help see *** *** https://github.com/ioBroker/ioBroker.docs *** ********************************************************** Your environment has been set up for using Node.js 10.17.0 (x64) and npm. F:\iobroker\SmartHome>
Zunächst stoppen wir ioBroker:
iob stop
Da sich seit Node.js 18.0 etwas in den Berechtigungen geändert hat, müssen wir dem Windows Dienst jetzt einmalig LocalSystem als Konto zuweisen, das machen wir mit
sc config iobroker(<Name der Instanz >) obj=LocalSystem
In meinem Beispiel also mit
F:\iobroker\SmartHome>sc config iobroker(SmartHome) obj=LocalSystem [SC] ChangeServiceConfig ERFOLG
Wichtig ist die Erfolgsmeldung, ansonsten habt ihr euch wahrscheinlich vertippt.
Jetzt aktualisieren wir Node.js, dazu benennen wir zunächst die alte Version umrename nodejs nodejs_org
Und laden die aktuell empfohlene Node.js Version herunter (derzeit 16.19.0, Stand 21.02.2023)
Für 64 Bit Systeme (und das sollten die allermeisten sein) geht das mitcurl --output .\nodejs.zip --url https://nodejs.org/dist/v16.19.0/node-v16.19.0-win-x64.zip
Für 32 Bit Systeme die URL https://nodejs.org/dist/v16.19.0/node-v16.19.0-win-x86.zip verwenden.
Jetzt packen wir das Zip File aus und benennen den nodejs Ordner passend um (Bei Verwendung der 32 Bit Variante bitte den Pfad im rename Kommando selbst anpassen):
tar xf nodejs.zip rename node-v16.19.0-win-x64 nodejs
Und schließlich müssen wir noch die angepasste Datei nodevars.bat übernehmen:
copy /Y nodejs_org\nodevars.bat nodejs\nodevars.bat
Anschließend starten wir ioBroker wieder mit
iob start
-
@gaspode
Ah ok, also quasi so wie immer (siehe mein Start-Post in diesem Thema).
Das ging ja damals nicht, aber da hab ich auch das Recht vom Iobroker nicht geändert.
Also sollte es quasi wie immer gehen, nur eben das Recht vom Dienst auf "Lokales Systemkonto" ändern.
Das wäre ja perfekt, wenn das so klappt.
Vielen Dank für die ausführliche Info.
Das Ganze werde ich nächstes Wochenende durchziehen, gebe dann Bescheid obs klappt.Danke
-
@gaspode
Hi,
so wie besprochen habe ich das jetzt so wie du gesagt hast getestet.
Und es stimmt, der Iobroker startet tätsächlich!ABER: Mein Problem (siehe Startpost) ist dadurch nicht erledigt:
npm -v bring immer noch einen Fehler:
C:\iobroker\SmartHome>npm -v C:\iobroker\SmartHome\nodejs\node_modules\npm\node_modules\socks-proxy-agent\dist\index.js:110 class SocksProxyAgent extends agent_base_1.Agent { ^ TypeError: Class extends value undefined is not a constructor or null at Object.<anonymous> (C:\iobroker\SmartHome\nodejs\node_modules\npm\node_modules\socks-proxy-agent\dist\index.js:110:44) at Module._compile (node:internal/modules/cjs/loader:1165:14) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1219:10) at Module.load (node:internal/modules/cjs/loader:1043:32) at Function.Module._load (node:internal/modules/cjs/loader:878:12) at Module.require (node:internal/modules/cjs/loader:1067:19) at require (node:internal/modules/cjs/helpers:103:18) at Object.<anonymous> (C:\iobroker\SmartHome\nodejs\node_modules\npm\node_modules\make-fetch-happen\lib\agent.js:174:29) at Module._compile (node:internal/modules/cjs/loader:1165:14) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1219:10) at Module.load (node:internal/modules/cjs/loader:1043:32) at Function.Module._load (node:internal/modules/cjs/loader:878:12) at Module.require (node:internal/modules/cjs/loader:1067:19) at require (node:internal/modules/cjs/helpers:103:18) at Object.<anonymous> (C:\iobroker\SmartHome\nodejs\node_modules\npm\node_modules\make-fetch-happen\lib\remote.js:7:18) at Module._compile (node:internal/modules/cjs/loader:1165:14) C:\iobroker\SmartHome\nodejs\node_modules\npm\node_modules\socks-proxy-agent\dist\index.js:110 class SocksProxyAgent extends agent_base_1.Agent { ^ TypeError: Class extends value undefined is not a constructor or null at Object.<anonymous> (C:\iobroker\SmartHome\nodejs\node_modules\npm\node_modules\socks-proxy-agent\dist\index.js:110:44) at Module._compile (node:internal/modules/cjs/loader:1165:14) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1219:10) at Module.load (node:internal/modules/cjs/loader:1043:32) at Function.Module._load (node:internal/modules/cjs/loader:878:12) at Module.require (node:internal/modules/cjs/loader:1067:19) at require (node:internal/modules/cjs/helpers:103:18) at Object.<anonymous> (C:\iobroker\SmartHome\nodejs\node_modules\npm\node_modules\make-fetch-happen\lib\agent.js:174:29) at Module._compile (node:internal/modules/cjs/loader:1165:14) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1219:10) at Module.load (node:internal/modules/cjs/loader:1043:32) at Function.Module._load (node:internal/modules/cjs/loader:878:12) at Module.require (node:internal/modules/cjs/loader:1067:19) at require (node:internal/modules/cjs/helpers:103:18) at Object.<anonymous> (C:\iobroker\SmartHome\nodejs\node_modules\npm\node_modules\make-fetch-happen\lib\remote.js:7:18) at Module._compile (node:internal/modules/cjs/loader:1165:14) C:\iobroker\SmartHome>
Nun weiß ich aber gar nicht wie sich das auswirkt, da der Iobroker läuft, ich muss jetzt mal schauen was nicht läuft, aber ich denke, dass kann nicht in Ordnung sein und wird mir Probleme bereiten.
Hat hier jemand noch eine Idee?
Danke im Voraus.
-
Fängt schon an, keine Updates möglich:
$ iobroker upgrade daswetter@3.1.4 --debug host.IOBROKER(SmartHome) Adapter "system.adapter.daswetter.0" is stopped. Aborting install because the npm version could not be checked!Please check that npm is installed correctly.Use "npm install -g npm@4" or "npm install -g npm@latest" to install a supported version.You need to make sure to repeat this step after installing an update to NodeJS and/or npm!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ERROR: Process exited with code 30
-
@nik82
Hmm, sorry. Bin erst in der Mitte des Threads eingestiegen, als es darum ging, dass Node.js 16.17.1 funktioniert, neuere Versionen aber nicht. Du hast ja zusätzlich noch ein anderes Problem.Offensichtlich hast du ein Problem mit dem Paket "socks-proxy-agent".
Was sagt denn
npm ls
-
@gaspode
Also ich habe noch Node.js v14 im Einsatz und will jetzt auf Node.js 16.
Egal ob ich Node.js 16.15, 16.17 oder 16.19 installiere, immer der gleiche Fehler.
Aber bin jetzt ein Stück weitergekommen und zwar habe ich wie schon oben beschrieben es nochmal so versucht:Bin so vorgegangen (mein Iobroker liegt auf C:\iobroker\SmartHome):
- C:\iobroker\SmartHome\nodejs\nodevars.bat wegkopiert
- Verzeichnisinhalt von "C:\iobroker\SmartHome\nodejs" komplett gelöscht
- Download der MSI Datei 64-bit: https://nodejs.org/download/release/v16.19.0/node-v16.19.0-x64.msi
- Installation ins vorhandene leere Verzeichnis: "C:\iobroker\SmartHome\nodejs"
(zusätzlich noch Tools mitinstalliert) - Iobroker Dienst auf "Lokales Systemkonto" gestellt
- node -v und npm -v bring alles korrekt:
- Iobroker gestartet
ABER: Er bringt mit immer noch Fehler wenn ich einen Adapter updaten will:
$ iobroker upgrade daswetter@3.1.4 --debug Update daswetter from @3.1.2 to @3.1.4 NPM version: 8.19.3 Installing iobroker.daswetter@3.1.4... (System call) npm WARN old lockfile so supplemental metadata must be fetched from the registry. npm WARN old lockfile npm WARN old lockfile This is a one-time fix-up, please be patient... npm WARN old lockfile npm WARN tarball tarball data for kodi-ws@https://github.com/iobroker-community-adapters/kodi-ws/tarball/master/ (sha512-MwuS5kn4j+/olDHH5/F+mO2fU0i2U2hsXsgK8zdj+kt6h8/Rf7iMxHLKcMyYkg1RRJFKY05/3v+GJbx28tetyQ==) seems to be corrupted. Trying again.
-