NEWS
Error i2c adapter after upgrade of node.js version 22
-
@hschief sagte in Error i2c adapter after upgrade of node.js version 22:
Alle Aktivitäten führe ich als user: iobroker aus.
Ist so nicht vorgesehen, leg dir einen User abseits davon an. Oder log dich als user mit der UID=1000 ein. Den gibt es ja laut Log.
A default user should be created! This user will be enabled to temporarily switch to root via 'sudo'!
A root login is not required in most Linux Distributions.
Run 'iobroker fix' or use the system tools to create a user.Was ist denn da los?
*** FAILED SERVICES ***
UNIT LOAD ACTIVE SUB DESCRIPTION- snmpd.service loaded failed failed Simple Network Management Protocol (SNMP) Daemon.
Und lösch da nix eigenhändig aus den Ausgaben raus. Auch keine IP-Adressen, mit privaten Adressen kann eh niemand was 'böses' anfangen. Man kann aber ggfls. Fehlkonfigurationen sehen.
Dies ist im iob diag nicht zu finden, da der diag wohl nur die letzten 25 Zeilen aus dem Log holt.
Dann liefer die Ausgabe aus dem vollen Log. Findet sich unter
iob logs
Ich würde den Adapter mal komplett deinstallieren und dann neu draufwerfen.
-
@hschief sagte in Error i2c adapter after upgrade of node.js version 22:
macht dies ein Admin?
hab ich, du kannst das nicht.
@hschief sagte in Error i2c adapter after upgrade of node.js version 22:
Liegt dies daran, dass ich neu im Forum bin?
nein, liegt an deinem Browser. Neu laden mit F5 und es geht sofort
-
@thomas-braun .. dann mache ich das morgen nochmals um den vollen Log zu kopieren. Wenn ich den Adapter löschen und neu installieren, verliere ich aber die komplette I2C config richtig? Das sind rund 40 Devices, gibt es eine einfache Möglichkeit die Config zu retten?
-
@hschief sagte in Error i2c adapter after upgrade of node.js version 22:
gibt es eine einfache Möglichkeit die Config zu retten?
üblicherweise gibt es in der Instanzenkonfiguration einen Button dafür.
ich habe den Adapter nicht.
EDIT:
2 Buttons! Sorry!
-
@hschief said in Error i2c adapter after upgrade of node.js version 22:
@thomas-braun .. dann mache ich das morgen nochmals um den vollen Log zu kopieren. Wenn ich den Adapter löschen und neu installieren, verliere ich aber die komplette I2C config richtig? Das sind rund 40 Devices, gibt es eine einfache Möglichkeit die Config zu retten?
Wenn du den Adapter NICHT löschst sondern nur REINSTALLIERST dann bleibt die Config meines Wissens nach erhalten. Sicher die Konfiguration aber jedenfalls. Reinstallation sollte passieren wenn du auf der Commandline
iob url iobroker.i2c@<version>
mit der derzeit installierten Version eintipselst. Bei einer Reinstallation erden nur die Codeteile entfernt und neu installiert. -
-
@thomas-braun Vielen Dank, ich probiere und melde mich, wird wahrscheinlich am Feiertag passieren. Danke euch allen.
-
@hschief So, habe gerade nochmal 2 Dinge probiert. Einfach drüber installieren mit iob url iobroker.i2c@1.2.1 zeigt leider das gleiche Ergebnis/gleicher Fehler
Dann habe ich noch node-gyp installiert, mich auf den folder /opt/iobroker/node_modules/i2c-bus/ gesetzt und node-gyp rebuild ausgeführt (war ja etwas weiter oben aufgelistet, keine Ahnung was das macht) Wenn ich das Kommando ausführe, kommen folgende Meldungen: Vielleicht kann einer damit was anfangen. Im nächsten Schritt werde ich den Adapter morgen mal komplett deinstallieren und neu installieren.
iobroker@node0:/opt/iobroker/node_modules/i2c-bus $ node-gyp rebuild gyp info it worked if it ends with ok gyp info using node-gyp@11.4.2 gyp info using node@22.20.0 | linux | arm64 gyp info find Python using Python version 3.11.2 found at "/usr/bin/python3" gyp info spawn /usr/bin/python3 gyp info spawn args [ gyp info spawn args '/usr/lib/node_modules/node-gyp/gyp/gyp_main.py', gyp info spawn args 'binding.gyp', gyp info spawn args '-f', gyp info spawn args 'make', gyp info spawn args '-I', gyp info spawn args '/opt/iobroker/node_modules/i2c-bus/build/config.gypi', gyp info spawn args '-I', gyp info spawn args '/usr/lib/node_modules/node-gyp/addon.gypi', gyp info spawn args '-I', gyp info spawn args '/home/iobroker/.cache/node-gyp/22.20.0/include/node/common.gypi', gyp info spawn args '-Dlibrary=shared_library', gyp info spawn args '-Dvisibility=default', gyp info spawn args '-Dnode_root_dir=/home/iobroker/.cache/node-gyp/22.20.0', gyp info spawn args '-Dnode_gyp_dir=/usr/lib/node_modules/node-gyp', gyp info spawn args '-Dnode_lib_file=/home/iobroker/.cache/node-gyp/22.20.0/<(target_arch)/node.lib', gyp info spawn args '-Dmodule_root_dir=/opt/iobroker/node_modules/i2c-bus', gyp info spawn args '-Dnode_engine=v8', gyp info spawn args '--depth=.', gyp info spawn args '--no-parallel', gyp info spawn args '--generator-output', gyp info spawn args 'build', gyp info spawn args '-Goutput_dir=.' gyp info spawn args ] gyp info spawn make gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ] make: Entering directory '/opt/iobroker/node_modules/i2c-bus/build' CXX(target) Release/obj.target/i2c/src/i2c.o In file included from ../src/i2c.cc:2: ../../nan/nan.h: In function ‘void Nan::SetAccessor(v8::Local<v8::ObjectTemplate>, v8::Local<v8::String>, GetterCallback, SetterCallback, v8::Local<v8::Value>, v8::AccessControl, v8::PropertyAttribute, imp::Sig)’: ../../nan/nan.h:2548:19: error: no matching function for call to ‘v8::ObjectTemplate::SetAccessor(v8::Local<v8::String>&, void (*&)(v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Value>&), void (*&)(v8::Local<v8::Name>, v8::Local<v8::Value>, const v8::PropertyCallbackInfo<void>&), v8::Local<v8::Object>&, v8::AccessControl&, v8::PropertyAttribute&)’ 2548 | tpl->SetAccessor( | ~~~~~~~~~~~~~~~~^ 2549 | name | ~~~~ 2550 | , getter_ | ~~~~~~~~~ 2551 | , setter_ | ~~~~~~~~~ 2552 | , obj | ~~~~~ 2553 | , settings | ~~~~~~~~~~ 2554 | , attribute | ~~~~~~~~~~~ 2555 | #if (NODE_MODULE_VERSION < NODE_16_0_MODULE_VERSION) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2556 | , signature | ~~~~~~~~~~~ 2557 | #endif | ~~~~~~ 2558 | ); | ~ In file included from /home/iobroker/.cache/node-gyp/22.20.0/include/node/v8-function.h:15, from /home/iobroker/.cache/node-gyp/22.20.0/include/node/v8.h:33, from /home/iobroker/.cache/node-gyp/22.20.0/include/node/node.h:74, from ../src/i2c.cc:1: /home/iobroker/.cache/node-gyp/22.20.0/include/node/v8-template.h:1049:8: note: candidate: ‘void v8::ObjectTemplate::SetAccessor(v8::Local<v8::String>, v8::AccessorGetterCallback, v8::AccessorSetterCallback, v8::Local<v8::Value>, v8::PropertyAttribute, v8::SideEffectType, v8::SideEffectType)’ 1049 | void SetAccessor( | ^~~~~~~~~~~ /home/iobroker/.cache/node-gyp/22.20.0/include/node/v8-template.h:1052:61: note: no known conversion for argument 5 from ‘v8::AccessControl’ to ‘v8::PropertyAttribute’ 1052 | Local<Value> data = Local<Value>(), PropertyAttribute attribute = None, | ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~ /home/iobroker/.cache/node-gyp/22.20.0/include/node/v8-template.h:1055:8: note: candidate: ‘void v8::ObjectTemplate::SetAccessor(v8::Local<v8::Name>, v8::AccessorNameGetterCallback, v8::AccessorNameSetterCallback, v8::Local<v8::Value>, v8::PropertyAttribute, v8::SideEffectType, v8::SideEffectType)’ 1055 | void SetAccessor( | ^~~~~~~~~~~ /home/iobroker/.cache/node-gyp/22.20.0/include/node/v8-template.h:1058:61: note: no known conversion for argument 5 from ‘v8::AccessControl’ to ‘v8::PropertyAttribute’ 1058 | Local<Value> data = Local<Value>(), PropertyAttribute attribute = None, | ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~ ../../nan/nan.h: In function ‘void Nan::SetAccessor(v8::Local<v8::ObjectTemplate>, v8::Local<v8::String>, GetterCallback, SetterCallback, v8::Local<v8::Value>, v8::AccessControl, v8::PropertyAttribute)’: ../../nan/nan.h:2594:19: error: no matching function for call to ‘v8::ObjectTemplate::SetAccessor(v8::Local<v8::String>&, void (*&)(v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Value>&), void (*&)(v8::Local<v8::Name>, v8::Local<v8::Value>, const v8::PropertyCallbackInfo<void>&), v8::Local<v8::Object>&, v8::AccessControl&, v8::PropertyAttribute&)’ 2594 | tpl->SetAccessor( | ~~~~~~~~~~~~~~~~^ 2595 | name | ~~~~ 2596 | , getter_ | ~~~~~~~~~ 2597 | , setter_ | ~~~~~~~~~ 2598 | , obj | ~~~~~ 2599 | , settings | ~~~~~~~~~~ 2600 | , attribute | ~~~~~~~~~~~ 2601 | ); | ~ /home/iobroker/.cache/node-gyp/22.20.0/include/node/v8-template.h:1049:8: note: candidate: ‘void v8::ObjectTemplate::SetAccessor(v8::Local<v8::String>, v8::AccessorGetterCallback, v8::AccessorSetterCallback, v8::Local<v8::Value>, v8::PropertyAttribute, v8::SideEffectType, v8::SideEffectType)’ 1049 | void SetAccessor( | ^~~~~~~~~~~ /home/iobroker/.cache/node-gyp/22.20.0/include/node/v8-template.h:1052:61: note: no known conversion for argument 5 from ‘v8::AccessControl’ to ‘v8::PropertyAttribute’ 1052 | Local<Value> data = Local<Value>(), PropertyAttribute attribute = None, | ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~ /home/iobroker/.cache/node-gyp/22.20.0/include/node/v8-template.h:1055:8: note: candidate: ‘void v8::ObjectTemplate::SetAccessor(v8::Local<v8::Name>, v8::AccessorNameGetterCallback, v8::AccessorNameSetterCallback, v8::Local<v8::Value>, v8::PropertyAttribute, v8::SideEffectType, v8::SideEffectType)’ 1055 | void SetAccessor( | ^~~~~~~~~~~ /home/iobroker/.cache/node-gyp/22.20.0/include/node/v8-template.h:1058:61: note: no known conversion for argument 5 from ‘v8::AccessControl’ to ‘v8::PropertyAttribute’ 1058 | Local<Value> data = Local<Value>(), PropertyAttribute attribute = None, | ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~ make: *** [i2c.target.mk:112: Release/obj.target/i2c/src/i2c.o] Error 1 make: Leaving directory '/opt/iobroker/node_modules/i2c-bus/build' gyp ERR! build error gyp ERR! stack Error: `make` failed with exit code: 2 gyp ERR! stack at ChildProcess.<anonymous> (/usr/lib/node_modules/node-gyp/lib/build.js:219:23) gyp ERR! System Linux 6.12.47+rpt-rpi-v8 gyp ERR! command "/usr/bin/node" "/usr/bin/node-gyp" "rebuild" gyp ERR! cwd /opt/iobroker/node_modules/i2c-bus gyp ERR! node -v v22.20.0 gyp ERR! node-gyp -v v11.4.2 gyp ERR! not ok iobroker@node0:/opt/iobroker/node_modules/i2c-bus $
-
Warum nicht mit dem Befehl von mir?
-
@thomas-braun Hi, der node-gyp rebuild war doch von Dir. Ich habe nur das "add i2c" nicht gemacht, da der Adapter ja schon da ist. Somit hatte ich die Hoffnung das dies reicht.
Ich habe gerade eben den Fehler auch mal einfach ChatGPT vorgeworfen und da kam eine recht interessante Antwort zurück:
Die SetAccessor-Funktion in v8 hat sich mit Node.js 22 stark geändert.
nan versucht, einen alten Funktionsaufruf zu verwenden, der in Node 22 nicht mehr kompatibel ist.
Konkret: v8::ObjectTemplate::SetAccessor akzeptiert jetzt kein v8::AccessControl mehr; nur noch PropertyAttribute und SideEffectType.Ich bin daher verblüft, dass dies bei Dir unter Node22 läuft. Ich suche morgen mal weiter .... Danke für deine Hilfe, hab ein tollen Abend
-
node-gyp rebuild war doch von Dir.
Das wüsste ich aber...
iob upgrade iobroker.i2c@AKTUELLE_VERSION
war von mir