NEWS
[How-to] Node.js ioBroker richtig updaten-2021/22 Edition
-
@cino sagte in [How-to] Node.js für ioBroker richtig updaten - 2021 Edition:
Bin schon die ganzen Befehle hier im Thread durchgegangen.
Dann zeig auch mal das Ergebnis der Eingaben
-
Sorry, ich mach das nochmal neu. Das ist alles durcheinander gekommen.
pi@iobroker:/opt/iobroker/node_modules/zigbee-herdsman/node_modules/@serialport/ bindings/build/Release $ npm install --loglevel error --production > @serialport/bindings@9.2.5 install > prebuild-install --tag-prefix @serialport/bindings@ || node-gyp rebuild make: Verzeichnis „/opt/iobroker/node_modules/zigbee-herdsman/node_modules/@seri alport/bindings/build“ wird betreten CXX(target) Release/obj.target/bindings/src/serialport.o ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Open(Nan::NAN_ME THOD_ARGS_TYPE)’: ../src/serialport.cpp:78:51: warning: cast between incompatible function types f rom ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {a ka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type] 78 | uv_queue_work(uv_default_loop(), req, EIO_Open, (uv_after_work_cb)EIO_ AfterOpen); | ^~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~ ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Update(Nan::NAN_ METHOD_ARGS_TYPE)’: ../src/serialport.cpp:135:53: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ { aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type] 135 | uv_queue_work(uv_default_loop(), req, EIO_Update, (uv_after_work_cb)EI O_AfterUpdate); | ^~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~ ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Close(Nan::NAN_M ETHOD_ARGS_TYPE)’: ../src/serialport.cpp:175:52: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ { aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type] 175 | uv_queue_work(uv_default_loop(), req, EIO_Close, (uv_after_work_cb)EIO _AfterClose); | ^~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~ ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Flush(Nan::NAN_M ETHOD_ARGS_TYPE)’: ../src/serialport.cpp:215:52: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ { aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type] 215 | uv_queue_work(uv_default_loop(), req, EIO_Flush, (uv_after_work_cb)EIO _AfterFlush); | ^~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~ ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Set(Nan::NAN_MET HOD_ARGS_TYPE)’: ../src/serialport.cpp:271:50: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ { aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type] 271 | uv_queue_work(uv_default_loop(), req, EIO_Set, (uv_after_work_cb)EIO_A fterSet); | ^~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~ ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Get(Nan::NAN_MET HOD_ARGS_TYPE)’: ../src/serialport.cpp:316:50: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ { aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type] 316 | uv_queue_work(uv_default_loop(), req, EIO_Get, (uv_after_work_cb)EIO_A fterGet); | ^~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~ ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE GetBaudRate(Nan: :NAN_METHOD_ARGS_TYPE)’: ../src/serialport.cpp:366:58: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ { aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type] 366 | uv_queue_work(uv_default_loop(), req, EIO_GetBaudRate, (uv_after_work_ cb)EIO_AfterGetBaudRate); | ^~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~ ../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Drain(Nan::NAN_M ETHOD_ARGS_TYPE)’: ../src/serialport.cpp:412:52: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ { aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type] 412 | uv_queue_work(uv_default_loop(), req, EIO_Drain, (uv_after_work_cb)EIO _AfterDrain); | ^~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~ ../src/serialport.cpp: At global scope: ../src/serialport.cpp:433:28: warning: unnecessary parentheses in declaration of ‘ToParityEnum’ [-Wparentheses] 433 | SerialPortParity NAN_INLINE(ToParityEnum(const v8::Local<v8::String>& v8 str)) { | ^ ../src/serialport.cpp:452:30: warning: unnecessary parentheses in declaration of ‘ToStopBitEnum’ [-Wparentheses] 452 | SerialPortStopBits NAN_INLINE(ToStopBitEnum(double stopBits)) { | ^ In file included from ../node_modules/nan/nan.h:58, from ../src/./serialport.h:13, from ../src/serialport.cpp:1: /home/iobroker/.cache/node-gyp/16.13.0/include/node/node.h:821:7: warning: cast between incompatible function types from ‘void (*)(Nan::ADDON_REGISTER_FUNCTION_ ARGS_TYPE)’ {aka ‘void (*)(v8::Local<v8::Object>)’} to ‘node::addon_register_fun c’ {aka ‘void (*)(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)’} [-Wcast- function-type] 821 | (node::addon_register_func) (regfunc), \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/iobroker/.cache/node-gyp/16.13.0/include/node/node.h:855:3: note: in expan sion of macro ‘NODE_MODULE_X’ 855 | NODE_MODULE_X(modname, regfunc, NULL, 0) // NOLINT (readability/null_ usage) | ^~~~~~~~~~~~~ ../src/serialport.cpp:486:1: note: in expansion of macro ‘NODE_MODULE’ 486 | NODE_MODULE(serialport, init); | ^~~~~~~~~~~ CXX(target) Release/obj.target/bindings/src/serialport_unix.o ../src/serialport_unix.cpp: In function ‘int setup(int, OpenBaton*)’: ../src/serialport_unix.cpp:179:82: warning: ‘%s’ directive output may be truncat ed writing up to 1023 bytes into a region of size 1005 [-Wformat-truncation=] 179 | rorString, sizeof(data->errorString), "Error %s Cannot open %s", strerro r(errno), data->path); | ^~ ../src/serialport_unix.cpp:179:13: note: ‘snprintf’ output 20 or more bytes (ass uming 1043) into a destination of size 1024 179 | snprintf(data->errorString, sizeof(data->errorString), "Error %s Can not open %s", strerror(errno), data->path); | ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/serialport_unix.cpp: In function ‘void EIO_Open(uv_work_t*)’: ../src/serialport_unix.cpp:89:84: warning: ‘%s’ directive output may be truncate d writing up to 1023 bytes into a region of size 1003 [-Wformat-truncation=] 89 | rString, sizeof(data->errorString), "Error: %s, cannot open %s", strerro r(errno), data->path); | ^~ ../src/serialport_unix.cpp:89:13: note: ‘snprintf’ output 22 or more bytes (assu ming 1045) into a destination of size 1024 89 | snprintf(data->errorString, sizeof(data->errorString), "Error: %s, c annot open %s", strerror(errno), data->path); | ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CXX(target) Release/obj.target/bindings/src/poller.o CXX(target) Release/obj.target/bindings/src/serialport_linux.o SOLINK_MODULE(target) Release/obj.target/bindings.node COPY Release/bindings.node make: Verzeichnis „/opt/iobroker/node_modules/zigbee-herdsman/node_modules/@seri alport/bindings/build“ wird verlassen added 65 packages, and audited 66 packages in 29s 8 packages are looking for funding run `npm fund` for details found 0 vulnerabilities
host.iobroker 2021-11-19 06:30:40.587 info iobroker npm-rebuild: exit 0 host.iobroker 2021-11-19 06:30:39.564 info iobroker npm-rebuild: Rebuild zigbee done host.iobroker 2021-11-19 06:30:39.539 info iobroker npm-rebuild: npm ERR! A complete log of this run can be found in:npm ERR! /home/iobroker/.npm/_logs/2021-11-19T05_30_39_483Z-debug.log host.iobroker 2021-11-19 06:30:39.531 info iobroker npm-rebuild: host.iobroker 2021-11-19 06:30:39.483 info iobroker npm-rebuild: npm ERR! Fix the upstream dependency conflict, or retrynpm ERR! this command with --force, or --legacy-peer-depsnpm ERR! to accept an incorrect (and potentially broken) dependency resolution.npm ERR! npm ERR! See /home/iobroker/.npm/eresolve-report.txt for a full report. host.iobroker 2021-11-19 06:30:39.480 info iobroker npm-rebuild: npm ERR! While resolving: iobroker.zigbee@1.6.6npm ERR! Found: eslint@7.32.0npm ERR! node_modules/eslintnpm ERR! dev eslint@"^7.18.0" from the root projectnpm ERR! npm ERR! Could not resolve dependency:npm ERR! peer eslint@"4.x" from lint-diff@1.2.1npm ERR! node_modules/lint-diffnpm ERR! dev lint-diff@"*" from the root projectnpm ERR! host.iobroker 2021-11-19 06:30:39.462 info iobroker npm-rebuild: npm ERR! host.iobroker 2021-11-19 06:30:39.461 info iobroker npm-rebuild: npm ERR! ERESOLVE unable to resolve dependency tree host.iobroker 2021-11-19 06:30:39.441 info iobroker npm-rebuild: npm ERR! code ERESOLVE host.iobroker 2021-11-19 06:30:38.629 info instance system.adapter.heatingcontrol.0 started with pid 9210 host.iobroker 2021-11-19 06:30:34.124 info instance system.adapter.lgtv.0 started with pid 9096 host.iobroker 2021-11-19 06:30:33.277 info iobroker npm-rebuild: npm install --loglevel error --production (System call1) in "/opt/iobroker/node_modules/iobroker.zigbee" host.iobroker 2021-11-19 06:30:31.860 info iobroker rebuild zigbee --install
-
@cino kannst du zigbee vllt aktualisieren? Da scheint bei dir irgendwas rech strange zu sein. Ansonsten lösch das node_modules/iobroker.zigbee Verzeichnuis und starte die Instanz neu, dann sollte es neu installiert weren. Hat mich dem Node.js Update weniger zu tun ...
-
@cino gemeint war eher die Ausgabe von node/nodejs/npm
-
@apollon77 Habe heute nodeJS von 12 auf 14 aktualisiert und dabei noch den JS-Controller von 3.3.18 auf 3.3.19.
Update selbst inkl:iobroker fix npm rebuild
Danach verhielten sich dennoch div. Adapter merkwürdig. Der web ist z.T. im loop pro Sek mehrfach abgestürzt mit:
2021-11-19 12:54:18 - warn: web.0 (2835245) Cannot parse "undefined" 2021-11-19 12:54:18 - warn: web.0 (2835245) socket.io [use] unknown user
Außerdem wurden dann mehrere Adapter immer neu gestartet mit Meldung "already running".
Am Ende habe ich über alle /opt/iobroker/node_modules/iobroker.%adapter% einiobroker rebuild %adapter% --install
laufen lassen.
In /opt/iobroker/node_modules gibt es natürlich noch viele Ordner die nicht nicht "iobroker.xxx" heißen. Ob darin nun noch was aus nodeJS 12 Zeiten ist und rebuilded werden müsste, kann ich nicht sagen.
Nach einem kompletten Reboot läuft nun seit 1h erstmal alles ruhig. -
@backfisch88 sagte in [How-to] Node.js für ioBroker richtig updaten - 2021 Edition:
Hallo
jedes mal (schon öfter probiert), wenn ich auf nodejs 14 upgrade läuft danach der mihome-vacuum Adapter nicht mehr.
Es läuft alles Reibungslos, bis es ein Befehl von IOBroker kommt... nach einigen Minuten ist er wieder verbunden (manchmal auch länger) und das Spiel geht von vorne los
mit node 12.X lief alles normalWie du ein Post weiter oben lesen kannst, habe ich heute auch ein Rundumschlag mit Updates gemacht.
Ich nutze mihome-vacuum in Ver. 3.3.1 mit einem Xiaomi M1S. Der Adapter funktionierte nach dem dem nodeJS Update sofort, nur Canvas musste für die Karte neu gebaut werden. Seit dem hat der Sauger auch schon 3 Räume mit immer aktueller Karte gesaugt. -
Heute morgen aufgewacht und der Zigbee Adapter lief. Keine Ahnung warum.
-
@cino sagte in [How-to] Node.js für ioBroker richtig updaten - 2021 Edition:
Heute morgen aufgewacht und der Zigbee Adapter lief. Keine Ahnung warum.
Vermutlich, weil der rebuild zwischenzeitlich durchgelaufen ist.
-
@apollon77 habe wieder auf 12.X Downgraded.
egal was man macht... nach einem Befehl ist der Adapter auf rot... Staubsauger reagiert in der App, aber im Adapter eben nicht... auch nach neustart des Adapters manchmal nicht... Reconnect Zeit zwischen 2 Minuten und X Stunden
-
@diginix saugen tut er... aber eben nur ein mal... dann geht der Adapter sofort auf Rot
-
Dann mach beim Adapter ein Issue auf, damit der Maintainer sich das ggf. anschauen kann. Wobei sich das sehr nach einem Individual-Problem anhört.
-
@thomas-braun said in [How-to] Node.js für ioBroker richtig updaten - 2021 Edition:
@cino sagte in [How-to] Node.js für ioBroker richtig updaten - 2021 Edition:
Heute morgen aufgewacht und der Zigbee Adapter lief. Keine Ahnung warum.
Vermutlich, weil der rebuild zwischenzeitlich durchgelaufen ist.
Ja aber in den Logs stand doch von wegen 3 mal versucht und der Adapter wird deaktiviert.
-
Nach dem Update von nodejs auf v14.18.1 kommt beim maxcul-Adapter folgender Fehler:
maxcul.0 2021-11-19 19:32:59.319 error Exception-Code: ERR_DLOPEN_FAILED: Module did not self-register: '/opt/iobroker/node_modules/@serialport/bindings/build/Release/bindings.node'. maxcul.0 2021-11-19 19:32:59.319 error Error: Module did not self-register: '/opt/iobroker/node_modules/@serialport/bindings/build/Release/bindings.node'. at Object.Module._extensions..node (internal/modules/cjs/loader.js:1144:18) at Module.load (internal/modules/cjs/loader.js:950:32) at Function.Module._load (internal/modules/cjs/loader.js:790:12) at Module.require (internal/modules/cjs/loader.js:974:19) at require (internal/modules/cjs/helpers.js:93:18) at bindings (/opt/iobroker/node_modules/bindings/bindings.js:112:48) at Object.<anonymous> (/opt/iobroker/node_modules/@serialport/bindings/lib/linux.js:2:36) at Module._compile (internal/modules/cjs/loader.js:1085:14) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10) at Module.load (internal/modules/cjs/loader.js:950:32) at Function.Module._load (internal/modules/cjs/loader.js:790:12) at Module.require (internal/modules/cjs/loader.js:974:19) at require (internal/modules/cjs/helpers.js:93:18) at Object.<anonymous> (/opt/iobroker/node_modules/@serialport/bindings/lib/index.js:14:22) at Module._compile (internal/modules/cjs/loader.js:1085:14) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10) maxcul.0 2021-11-19 19:32:59.317 error uncaught exception: Module did not self-register: '/opt/iobroker/node_modules/@serialport/bindings/build/Release/bindings.node'.
Werde aus den ganzen "Lösungen" nicht ganz schlau....
npm rebuild hat nichts gebracht
NPM v6.14.15
js-controller 3.3.19Beim Slave hat alles geklappt
Bin jetzt auf dem Host auf 12 zurück, ohne Heizung geht es grade nicht -
maxcul deinstallieren und nochmal neu installieren.
-
@guergen sagte in [How-to] Node.js für ioBroker richtig updaten - 2021 Edition:
/opt/iobroker/node_modules/@serialport/bindings
Mal in das Verzeichnis wechseln und dort ein "npm install --production" machen
-
@apollon77 Ich habe node v12.22.7. Ist das richtig, dass ich noch ca. 2 Jahre mit dem Update warten kann?
-
@marty56
Theoretisch ja nur praktisch nicht sinnvoll. Ich bin schon lange auf 14 und null Probleme -
@jan1 Warum meinst Du, dass es nur theoretisch sinnvoll ist?
Wenn ich mir den Thread ansehe, dann brauche ich die ganzen Probleme erstmal nicht.
-
@marty56
Ich habe nicht alles gelesen und das meiste was ich gelesen habe, sind wohl (mal wieder) mitgeschleppte Probleme, die versteckt die ganze Zeit schon da waren und nun eben erst deutlich zu sehen sind. Was wiederum nicht wirklich was mit Node 14 zu tun hat, sondern ehr mit zerfledderten Systemen, die jetzt eben mal ein Update oder gleich mehrere erhalten haben.
Ergo, bleib aktuell und habe keine ProblemEs gibt so gut wie kein Grund auf 12 zu bleiben.
Probier es einfach aus und schau obs läuft, zurück geht genau so schnell wie hoch.
Hatte ne Zeitlang produktiv 16 nmit NPM 7 laufen und keine Probleme, dann mit NPM 6 und weil ich eben gerne bastle, wieder zurück auf 14 und alles ohne Ärger. -
RELEASE STATUS INITIAL RELEASE ACTIVE LTS START MAINTENANCE LTS START END-OF-LIFE v12 2019-04-23 2019-10-21 2020-11-30 2022-04-30
https://nodejs.org/en/about/releases/
Für nodeJS12 also ist im April 22 Schicht. Also kannst du auch jetzt wechseln. Die Erfahrung zeigt: Je länger gewartet wird, umso mehr Probleme gibt es