NEWS
[How-to] Node.js für ioBroker richtig updaten
-
@thomas-braun sagte in [How-to] Node.js für ioBroker richtig updaten:
@mymeyer Im Verzeichnis des angemeckerten Moduls.
Jetzt kommt das raus:-(
pi@iobroker-slave:/opt/iobroker $ cd node_modules/iobroker.js-controller/ pi@iobroker-slave:/opt/iobroker/node_modules/iobroker.js-controller $ pwd /opt/iobroker/node_modules/iobroker.js-controller pi@iobroker-slave:/opt/iobroker/node_modules/iobroker.js-controller $ npm install --production > iobroker.js-controller@3.1.6 preinstall /opt/iobroker/node_modules/iobroker.js-controller > node lib/preinstallCheck.js NPM version: 6.14.11 npm WARN deprecated istanbul@0.4.5: This module is no longer maintained, try this instead: npm WARN deprecated npm i nyc npm WARN deprecated Visit https://istanbul.js.org/integrations for other alternatives. npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142 npm WARN deprecated debug@3.2.6: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797) npm WARN deprecated har-validator@5.1.5: this library is no longer supported npm WARN deprecated chokidar@2.1.8: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies. npm WARN deprecated fsevents@1.2.13: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2. npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated > unix-dgram@2.0.3 install /opt/iobroker/node_modules/iobroker.js-controller/node_modules/unix-dgram > node-gyp rebuild make: Entering directory '/opt/iobroker/node_modules/iobroker.js-controller/node_modules/unix-dgram/build' CXX(target) Release/obj.target/unix_dgram/src/unix_dgram.o In file included from ../../nan/nan.h:56, from ../src/unix_dgram.cc:5: /home/iobroker/.cache/node-gyp/12.20.2/include/node/node.h:737:43: warning: cast between incompatible function types from 'void (*)(v8::Local<v8::Object>)' to node::addon_register_func' {aka 'void (*)(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)'} [-Wcast-function-type] (node::addon_register_func) (regfunc), \ ^ /home/iobroker/.cache/node-gyp/12.20.2/include/node/node.h:771:3: note: in expansion of macro 'NODE_MODULE_X' NODE_MODULE_X(modname, regfunc, NULL, 0) // NOLINT (readability/null_usage) ^~~~~~~~~~~~~ ../src/unix_dgram.cc:404:1: note: in expansion of macro 'NODE_MODULE' NODE_MODULE(unix_dgram, Initialize) ^~~~~~~~~~~ SOLINK_MODULE(target) Release/obj.target/unix_dgram.node COPY Release/unix_dgram.node make: Leaving directory '/opt/iobroker/node_modules/iobroker.js-controller/node_modules/unix-dgram/build' > ursa-optional@0.9.10 install /opt/iobroker/node_modules/iobroker.js-controller/node_modules/ursa-optional > node rebuild.js ursaNative bindings compilation fail. This is not an issue. Modules that depend on it will use fallbacks. > diskusage@1.1.3 install /opt/iobroker/node_modules/iobroker.js-controller/node_modules/diskusage > node-gyp rebuild make: Entering directory '/opt/iobroker/node_modules/iobroker.js-controller/node_modules/diskusage/build' CXX(target) Release/obj.target/diskusage/src/main.o In file included from ../../nan/nan.h:56, from ../src/main.cpp:3: /home/iobroker/.cache/node-gyp/12.20.2/include/node/node.h:737:43: warning: cast between incompatible function types from 'void (*)(v8::Local<v8::Object>)' to node::addon_register_func' {aka 'void (*)(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)'} [-Wcast-function-type] (node::addon_register_func) (regfunc), \ ^ /home/iobroker/.cache/node-gyp/12.20.2/include/node/node.h:771:3: note: in expansion of macro 'NODE_MODULE_X' NODE_MODULE_X(modname, regfunc, NULL, 0) // NOLINT (readability/null_usage) ^~~~~~~~~~~~~ ../src/main.cpp:42:1: note: in expansion of macro 'NODE_MODULE' NODE_MODULE(diskusage, Init) ^~~~~~~~~~~ CXX(target) Release/obj.target/diskusage/src/diskusage_posix.o SOLINK_MODULE(target) Release/obj.target/diskusage.node COPY Release/diskusage.node make: Leaving directory '/opt/iobroker/node_modules/iobroker.js-controller/node_modules/diskusage/build' > acme-v2@1.8.6 postinstall /opt/iobroker/node_modules/iobroker.js-controller/node_modules/acme-v2 > node scripts/postinstall Greenlock and ACME.js v3 are on the way! Watch for updates at https://indiegogo.com/at/greenlock > iobroker.js-controller@3.1.6 install /opt/iobroker/node_modules/iobroker.js-controller > node iobroker.js setup first internal/modules/cjs/loader.js:818 throw err; ^ Error: Cannot find module './_copyObject' Require stack: - /opt/iobroker/node_modules/iobroker.js-controller/node_modules/y18n/index.js - /opt/iobroker/node_modules/iobroker.js-controller/node_modules/yargs/build/lib/yargs.js - /opt/iobroker/node_modules/iobroker.js-controller/node_modules/yargs/yargs.js - /opt/iobroker/node_modules/iobroker.js-controller/node_modules/yargs/index.js - /opt/iobroker/node_modules/iobroker.js-controller/lib/setup.js - /opt/iobroker/node_modules/iobroker.js-controller/iobroker.js at Function.Module._resolveFilename (internal/modules/cjs/loader.js:815:15) at Function.Module._load (internal/modules/cjs/loader.js:667:27) at Module.require (internal/modules/cjs/loader.js:887:19) at require (internal/modules/cjs/helpers.js:74:18) at Object.<anonymous> (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/y18n/index.js:1:18) at Module._compile (internal/modules/cjs/loader.js:999:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10) at Module.load (internal/modules/cjs/loader.js:863:32) at Function.Module._load (internal/modules/cjs/loader.js:708:14) at Module.require (internal/modules/cjs/loader.js:887:19) { code: 'MODULE_NOT_FOUND', requireStack: [ '/opt/iobroker/node_modules/iobroker.js-controller/node_modules/y18n/index.js', '/opt/iobroker/node_modules/iobroker.js-controller/node_modules/yargs/build/lib/yargs.js', '/opt/iobroker/node_modules/iobroker.js-controller/node_modules/yargs/yargs.js', '/opt/iobroker/node_modules/iobroker.js-controller/node_modules/yargs/index.js', '/opt/iobroker/node_modules/iobroker.js-controller/lib/setup.js', '/opt/iobroker/node_modules/iobroker.js-controller/iobroker.js' ] } npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! iobroker.js-controller@3.1.6 install: `node iobroker.js setup first` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the iobroker.js-controller@3.1.6 install script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! /home/iobroker/.npm/_logs/2021-02-20T11_07_58_610Z-debug.log pi@iobroker-slave:/opt/iobroker/node_modules/iobroker.js-controller $ -
@thomas-braun sagte in [How-to] Node.js für ioBroker richtig updaten:
Versuch mal das
cd /opt/iobroker/node_modules/@serialport npm install --productionpi@iobroker-slave:/opt/iobroker/node_modules/iobroker.js-controller $ cd /opt/iobroker/node_modules/@serialport pi@iobroker-slave:/opt/iobroker/node_modules/@serialport $ npm install --production > iobroker.inst@2.0.3 install /opt/iobroker > node lib/checkVersions.js NPM version: 6.14.11 > iobroker.inst@2.0.3 postinstall /opt/iobroker > node lib/install.js ╭─────────────────────────────────────────────────────────╮ │ │ │ Manual installation of ioBroker is no longer supported │ │ on Linux, OSX and FreeBSD! │ │ Please refer to the documentation on how to install it! │ │ https://github.com/ioBroker/ioBroker/wiki/Installation │ │ │ ╰─────────────────────────────────────────────────────────╯ npm ERR! code ELIFECYCLE npm ERR! errno 100 npm ERR! iobroker.inst@2.0.3 postinstall: `node lib/install.js` npm ERR! Exit status 100 npm ERR! npm ERR! Failed at the iobroker.inst@2.0.3 postinstall script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! /home/iobroker/.npm/_logs/2021-02-20T11_26_12_890Z-debug.log pi@iobroker-slave:/opt/iobroker/node_modules/@serialport $Und nun ?
-
@thomas-braun sagte in [How-to] Node.js für ioBroker richtig updaten:
Versuch mal das
cd /opt/iobroker/node_modules/@serialport npm install --productionpi@iobroker-slave:/opt/iobroker/node_modules/iobroker.js-controller $ cd /opt/iobroker/node_modules/@serialport pi@iobroker-slave:/opt/iobroker/node_modules/@serialport $ npm install --production > iobroker.inst@2.0.3 install /opt/iobroker > node lib/checkVersions.js NPM version: 6.14.11 > iobroker.inst@2.0.3 postinstall /opt/iobroker > node lib/install.js ╭─────────────────────────────────────────────────────────╮ │ │ │ Manual installation of ioBroker is no longer supported │ │ on Linux, OSX and FreeBSD! │ │ Please refer to the documentation on how to install it! │ │ https://github.com/ioBroker/ioBroker/wiki/Installation │ │ │ ╰─────────────────────────────────────────────────────────╯ npm ERR! code ELIFECYCLE npm ERR! errno 100 npm ERR! iobroker.inst@2.0.3 postinstall: `node lib/install.js` npm ERR! Exit status 100 npm ERR! npm ERR! Failed at the iobroker.inst@2.0.3 postinstall script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! /home/iobroker/.npm/_logs/2021-02-20T11_26_12_890Z-debug.log pi@iobroker-slave:/opt/iobroker/node_modules/@serialport $Und nun ?
@mymeyer
Mach mal den cache leercd /optI/iobroker npm cache clear --forceDann installier dien smartmeter-Adapter nochmal neu.
-
@mymeyer
Mach mal den cache leercd /optI/iobroker npm cache clear --forceDann installier dien smartmeter-Adapter nochmal neu.
@thomas-braun sagte in [How-to] Node.js für ioBroker richtig updaten:
@mymeyer
Mach mal den cache leercd /optI/iobroker npm cache clear --forceDann installier dien smartmeter-Adapter nochmal neu.
Gemacht aber er läßt sich unten dem Master nicht löschen und somit auch nicht neu installieren.
Das kommt dabei raus:Done with error: internal/modules/cjs/loader.js:818 throw err; ^Error: Cannot find module './_copyObject'Require stack:- /opt/iobroker/node_modules/iobroker.js-controller/node_modules/y18n/index.js- /opt/iobroker/node_modules/iobroker.js-controller/node_modules/yargs/build/lib/yargs.js- /opt/iobroker/node_modules/iobroker.js-controller/node_modules/yargs/yargs.js- /opt/iobroker/node_modules/iobroker.js-controller/node_modules/yargs/index.js- /opt/iobroker/node_modules/iobroker.js-controller/lib/setup.js- /opt/iobroker/node_modules/iobroker.js-controller/iobroker.js at Function.Module._resolveFilename (internal/modules/cjs/loader.js:815:15) at Function.Module._load (internal/modules/cjs/loader.js:667:27) at Module.require (internal/modules/cjs/loader.js:887:19) at require (internal/modules/cjs/helpers.js:74:18) at Object. (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/y18n/index.js:1:18) at Module._compile (internal/modules/cjs/loader.js:999:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10) at Module.load (internal/modules/cjs/loader.js:863:32) at Function.Module._load (internal/modules/cjs/loader.js:708:14) at Module.require (internal/modules/cjs/loader.js:887:19) { code: 'MODULE_NOT_FOUND', requireStack: [ '/opt/iobroker/node_modules/iobroker.js-controller/node_modules/y18n/index.js', '/opt/iobroker/node_modules/iobroker.js-controller/node_modules/yargs/build/lib/yargs.js', '/opt/iobroker/node_modules/iobroker.js-controller/node_modules/yargs/yargs.js', '/opt/iobroker/node_modules/iobroker.js-controller/node_modules/yargs/index.js', '/opt/iobroker/node_modules/iobroker.js-controller/lib/setup.js', '/opt/iobroker/node_modules/iobroker.js-controller/iobroker.js' ]}Dann habe ich ihn auf dem Master per "./iobroker del smartmeter.0" gelöscht. Aber in der Web Übersicht steht er immer noch. Und der Slave läuft ja noch nicht korrekt. Laut Iobroker status:
pi@iobroker-slave:/opt/iobroker $ iobroker status internal/modules/cjs/loader.js:818 throw err; ^ Error: Cannot find module './_copyObject' Require stack: - /opt/iobroker/node_modules/iobroker.js-controller/node_modules/y18n/index.js - /opt/iobroker/node_modules/iobroker.js-controller/node_modules/yargs/build/lib/yargs.js - /opt/iobroker/node_modules/iobroker.js-controller/node_modules/yargs/yargs.js - /opt/iobroker/node_modules/iobroker.js-controller/node_modules/yargs/index.js - /opt/iobroker/node_modules/iobroker.js-controller/lib/setup.js - /opt/iobroker/node_modules/iobroker.js-controller/iobroker.js at Function.Module._resolveFilename (internal/modules/cjs/loader.js:815:15) at Function.Module._load (internal/modules/cjs/loader.js:667:27) at Module.require (internal/modules/cjs/loader.js:887:19) at require (internal/modules/cjs/helpers.js:74:18) at Object.<anonymous> (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/y18n/index.js:1:18) at Module._compile (internal/modules/cjs/loader.js:999:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10) at Module.load (internal/modules/cjs/loader.js:863:32) at Function.Module._load (internal/modules/cjs/loader.js:708:14) at Module.require (internal/modules/cjs/loader.js:887:19) { code: 'MODULE_NOT_FOUND', requireStack: [ '/opt/iobroker/node_modules/iobroker.js-controller/node_modules/y18n/index.js', '/opt/iobroker/node_modules/iobroker.js-controller/node_modules/yargs/build/lib/yargs.js', '/opt/iobroker/node_modules/iobroker.js-controller/node_modules/yargs/yargs.js', '/opt/iobroker/node_modules/iobroker.js-controller/node_modules/yargs/index.js', '/opt/iobroker/node_modules/iobroker.js-controller/lib/setup.js', '/opt/iobroker/node_modules/iobroker.js-controller/iobroker.js' ] } pi@iobroker-slave:/opt/iobroker $Interesse an einer TeamViever Session ?
-
@thomas-braun sagte in [How-to] Node.js für ioBroker richtig updaten:
@mymeyer
Mach mal den cache leercd /optI/iobroker npm cache clear --forceDann installier dien smartmeter-Adapter nochmal neu.
Gemacht aber er läßt sich unten dem Master nicht löschen und somit auch nicht neu installieren.
Das kommt dabei raus:Done with error: internal/modules/cjs/loader.js:818 throw err; ^Error: Cannot find module './_copyObject'Require stack:- /opt/iobroker/node_modules/iobroker.js-controller/node_modules/y18n/index.js- /opt/iobroker/node_modules/iobroker.js-controller/node_modules/yargs/build/lib/yargs.js- /opt/iobroker/node_modules/iobroker.js-controller/node_modules/yargs/yargs.js- /opt/iobroker/node_modules/iobroker.js-controller/node_modules/yargs/index.js- /opt/iobroker/node_modules/iobroker.js-controller/lib/setup.js- /opt/iobroker/node_modules/iobroker.js-controller/iobroker.js at Function.Module._resolveFilename (internal/modules/cjs/loader.js:815:15) at Function.Module._load (internal/modules/cjs/loader.js:667:27) at Module.require (internal/modules/cjs/loader.js:887:19) at require (internal/modules/cjs/helpers.js:74:18) at Object. (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/y18n/index.js:1:18) at Module._compile (internal/modules/cjs/loader.js:999:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10) at Module.load (internal/modules/cjs/loader.js:863:32) at Function.Module._load (internal/modules/cjs/loader.js:708:14) at Module.require (internal/modules/cjs/loader.js:887:19) { code: 'MODULE_NOT_FOUND', requireStack: [ '/opt/iobroker/node_modules/iobroker.js-controller/node_modules/y18n/index.js', '/opt/iobroker/node_modules/iobroker.js-controller/node_modules/yargs/build/lib/yargs.js', '/opt/iobroker/node_modules/iobroker.js-controller/node_modules/yargs/yargs.js', '/opt/iobroker/node_modules/iobroker.js-controller/node_modules/yargs/index.js', '/opt/iobroker/node_modules/iobroker.js-controller/lib/setup.js', '/opt/iobroker/node_modules/iobroker.js-controller/iobroker.js' ]}Dann habe ich ihn auf dem Master per "./iobroker del smartmeter.0" gelöscht. Aber in der Web Übersicht steht er immer noch. Und der Slave läuft ja noch nicht korrekt. Laut Iobroker status:
pi@iobroker-slave:/opt/iobroker $ iobroker status internal/modules/cjs/loader.js:818 throw err; ^ Error: Cannot find module './_copyObject' Require stack: - /opt/iobroker/node_modules/iobroker.js-controller/node_modules/y18n/index.js - /opt/iobroker/node_modules/iobroker.js-controller/node_modules/yargs/build/lib/yargs.js - /opt/iobroker/node_modules/iobroker.js-controller/node_modules/yargs/yargs.js - /opt/iobroker/node_modules/iobroker.js-controller/node_modules/yargs/index.js - /opt/iobroker/node_modules/iobroker.js-controller/lib/setup.js - /opt/iobroker/node_modules/iobroker.js-controller/iobroker.js at Function.Module._resolveFilename (internal/modules/cjs/loader.js:815:15) at Function.Module._load (internal/modules/cjs/loader.js:667:27) at Module.require (internal/modules/cjs/loader.js:887:19) at require (internal/modules/cjs/helpers.js:74:18) at Object.<anonymous> (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/y18n/index.js:1:18) at Module._compile (internal/modules/cjs/loader.js:999:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10) at Module.load (internal/modules/cjs/loader.js:863:32) at Function.Module._load (internal/modules/cjs/loader.js:708:14) at Module.require (internal/modules/cjs/loader.js:887:19) { code: 'MODULE_NOT_FOUND', requireStack: [ '/opt/iobroker/node_modules/iobroker.js-controller/node_modules/y18n/index.js', '/opt/iobroker/node_modules/iobroker.js-controller/node_modules/yargs/build/lib/yargs.js', '/opt/iobroker/node_modules/iobroker.js-controller/node_modules/yargs/yargs.js', '/opt/iobroker/node_modules/iobroker.js-controller/node_modules/yargs/index.js', '/opt/iobroker/node_modules/iobroker.js-controller/lib/setup.js', '/opt/iobroker/node_modules/iobroker.js-controller/iobroker.js' ] } pi@iobroker-slave:/opt/iobroker $Interesse an einer TeamViever Session ?
@mymeyer sagte in [How-to] Node.js für ioBroker richtig updaten:
Interesse an einer TeamViever Session ?
Nein.
-
@mymeyer sagte in [How-to] Node.js für ioBroker richtig updaten:
Interesse an einer TeamViever Session ?
Nein.
@thomas-braun sagte in [How-to] Node.js für ioBroker richtig updaten:
@mymeyer sagte in [How-to] Node.js für ioBroker richtig updaten:
Interesse an einer TeamViever Session ?
Nein.
Und nun ... ? -
@mymeyer sagte in [How-to] Node.js für ioBroker richtig updaten:
Interesse an einer TeamViever Session ?
Nein.
@thomas-braun Hmm...also nachdem ich "npm install iobroker.js-controller@3.1.6 --production" gemacht habe, läuft der Slave wieder . Zumindest sagt es der Status und der Adapter läßt sich verbinden "grün" . Hmm... komisch. Bevor ich npm install gemacht hatte, habe ich noch das Verzeichnis /node_modules komplett gelöscht.
Der Smartmeter überträgt Daten und es sind keine Fehler im Log.
Ich würde sagen mit dem JS-controller 3.2.16 lasse ich mir jetzt noch etwas Zeit

-
@thomas-braun Hmm...also nachdem ich "npm install iobroker.js-controller@3.1.6 --production" gemacht habe, läuft der Slave wieder . Zumindest sagt es der Status und der Adapter läßt sich verbinden "grün" . Hmm... komisch. Bevor ich npm install gemacht hatte, habe ich noch das Verzeichnis /node_modules komplett gelöscht.
Der Smartmeter überträgt Daten und es sind keine Fehler im Log.
Ich würde sagen mit dem JS-controller 3.2.16 lasse ich mir jetzt noch etwas Zeit

@mymeyer noch Zeit lassen? Neeee. Sorry das ich jetzt „am Ende“ hier klugscheisse ;-))
Das mir @serialport war fast richtig ... man hätte nur das richtige unterverzeichnis nehmen müssen. Das wäre (wie es auch in der Fehlermeldung kryptisch zu sehen war: @serialport/bindings
Dann wäre alles ohne den ganzen hassle gegangen

Also Controller 3.2 ist easy im Vergleich dazu.
-
@mymeyer noch Zeit lassen? Neeee. Sorry das ich jetzt „am Ende“ hier klugscheisse ;-))
Das mir @serialport war fast richtig ... man hätte nur das richtige unterverzeichnis nehmen müssen. Das wäre (wie es auch in der Fehlermeldung kryptisch zu sehen war: @serialport/bindings
Dann wäre alles ohne den ganzen hassle gegangen

Also Controller 3.2 ist easy im Vergleich dazu.
@apollon77 @MyMeyer
Oh, das mit bindings hatte ich übersehen. -
MOD-EDIT: Dieser Thread und insbesondere diese Anleitung ist von 2019 und somit veraltet
aktuell ist
https://forum.iobroker.net/topic/35090/howto-nodejs-installation-und-upgrades-unter-debian
Update März 2023: Die aktuelle Anleitung findet ihr hier : https://forum.iobroker.net/topic/64032/update-nodejs-best-practise-supported-14-16-und-18
1. Einleitung
Node.js ist die Laufzeitumgebung der Programmiersprache JavaScript, in der ioBroker geschrieben ist. Ohne Node.js funktioniert ioBroker nicht.
Wie bei vielen Open-Source-Technologien üblich, entwickelt sich Node.js schnell weiter. Kleinere Updates, die die Stabilität und Sicherheit steigern oder gar neue Funktionen hinzufügen, erscheinen fast wöchentlich.
Node.js-Versionen mit gerader Hauptversionsnummer werden als LTS-Versionen (Long Term Support) bezeichnet und einige Jahre gepflegt (z.B. 8.x). In 2017 war das Node.js 8, 2018 kam Node.js 10, dann 12.x hinzu und im Oktober 2021 wird Node.js 14 den LTS-Status erhalten.
Im gleichem Zug erreichen frühere LTS-Versionen ihr Lebensende (EOL, End of Life). So hat Node.js 6 im April 2019 den EOL-Status erhalten und bekommt damit keine Updates mehr, Nodejs 8.x ist seit November 2019 raus.
Alle Node.js-Versionen mit ungeraden Versionsnummern sind Entwicklungsversionen und sollten nicht produktiv genutzt werden.
Auch ioBroker wird stetig weiterentwickelt und nutzt die neuen Funktionen aktueller Node.js-Versionen. Obwohl der ioBroker js-controller mit Versionen 1.4.x bzw. 1.5.x noch Node.js 4 unterstützt, fordern neue Adapter immer häufiger mindestens Node.js 8 als Grundvoraussetzung.
Ab der Version 2.0 des js-controllers (das Freigabedatum ist noch nicht bekannt) sind die Anpassungen so tiefgreifend, dass die Node.js-Versionen 4 und 6 nicht mehr unterstützt werden können.
Ab Version 3.0/3.1 vom Controller, der gerade (Stand 24.4.2020) im Latest Repository ist, wird Nodejs 10.x Minimum sein.
Alle paar Jahre steht also für eine ioBroker-Installation ein Update von Node.js an. Dieser Artikel soll zusammenfassen wir man dazu am besten vorgeht.
2. Wer sollte updaten?
Aktuell empfehlen wir, bei ioBroker-Neuinstallationen mindestens Node.js 10, besser noch 12.x. zu verwenden. Es sind wenige Adapter bekannt, die nicht mit Node 10/12 funktionieren: Details dazu in https://forum.iobroker.net/topic/30561/status-iobroker-und-node-js-12-x
Windows-Anwendern empfehlen wir, auf jeden Fall am Test des neuen Windows-Installers teilzunehmen: https://forum.iobroker.net/post/266623
Der zukünftige Windows-Installer für ioBroker wird eine Funktion erhalten, bestehende Installationen automatisch auf aktuelle js-controller- und Node.js-Versionen zu migrieren, ohne dass man die Kommandozeile bemühen muss.Bevor man beginnt, sollte man in der Befehlszeile mit dem Befehl
node -vüberprüfen, welche Version von Node.js gerade installiert ist. Eine gute Idee ist es, diese Versionsangabe auch mit der Node.js-Version im Übersichts-Fenster des ioBroker-Admins für diesen Host zu vergleichen. Sollten sich die Versionen unterscheiden, sind mehrere Node.js-Varianten installiert, was zu Problemen führen kann.
Grundsätzlich gilt: Sollte das ioBroker-System stabil laufen, muss Node.js auch nicht auf Gedeih und Verderb upgedated werden. Wenn aber die Installation bestimmter Adapter fehlschlägt (wohlmöglich sogar mit entsprechender Fehlermeldung) oder eine Node-Version < 4 für einen js-controller > Version 1.4.x eingesetzt wird, sollte über ein Node.js-Update nachgedacht werden. Es sind auch Probleme für die Node.js-Versionen 8.0 - 8.12 mit volllaufendem RAM bekannt, so dass wir auch hier ein Update empfehlen.
Wie bereits gesagt: Sollte das ioBroker-System stabil laufen und ist die Installation technisch nicht gefordert, muss Node.js auch nicht auf Gedeih und Verderb upgedated werden.
3. Was sollte ich vor dem Update tun?
Hinweis: Falls die Version des js-controllers <= 1.5.12 ist, muss VOR dem Update in den Einstellungen der Admin-Instanz
"Verschlüsselung (https) benutzen"ausgeschaltet werden. Das in ioBroker bis dahin integrierte Zertifikat kann zu Problemen beim Starten des Admin bei Node.js-Versionen >= 10 führen.Damit es nach dem Update zu keinen Inkompatibilitäten oder Probleme kommt sollte man alle Adapter prüfen und aktualisieren. Vor allem Adapter mit nativen Bestandteilen, wie alles mit Serialport oder Bluetooth können Probleme bereiten. Hier am besten die Adapter-Readme's per Admin oder im GitHub prüfen, ob neue Versionen zur Verfügung stehen die die geplante Node.js Version explizit erst unterstützen. Auch wenn diese Versionen ggf. noch im "Latest" Repository sind muss man diese vorher aktualisieren. Alternativ wartet man mit der ganzen Update-Aktion bis die neuen Versionen im "Stable" Repository sind, schreibt den Entwickler dazu an oder fragt im Forum nach.
Wenn man diesen Schritt nicht durchführt kann es zu unnötigen Problemen beim update der Adapter kommen!
4. Step-by-step-Anleitung für Unix-Systeme
-
Zuerst muss natürlich unbedingt ein Backup erstellt werden. Dazu kann z.B. der BackItUp-Adapter genutzt oder der Kommandozeilenbefehl
cd /opt/iobroker iobroker backupausgeführt werden. Das Backup sollte aktuell sein, damit möglichst keine Daten verloren gehen.
-
Anschließend ioBroker stoppen, damit Updates keine Nebeneffekte oder Abstürze verursachen.
iobroker stopBitte anschließend im Webbrowser prüfen, dass der ioBroker-Admin danach wirklich nicht mehr startet. Sollte er weiterhin aufrufbar sein, dann den Rechner neu starten und nochmals „iobroker stop“ ausführen und erneut testen. Für die Techniker unter uns: Man kann auch mit einem Tool wie "top" prüfen, ob noch Prozesse existieren, die mit "io." beginnen. Die dann mit einem beherzten "sudo kill -9 <ProzessID>" zwangsbeenden.
-
Jetzt aktualisiert man Node.js auf die gewünschte neue Version.
Unter Linux reicht es, dazu den Nodesource-Installationsbefehl für das jeweilige Betriebssystem auszuführen. Verschiedene Varianten sind unter https://github.com/nodesource/distributions#debinstall gelistet.
Zum Beispiel lauten die Befehle für einen Raspberry Pi der ein Debian bzw. Raspbian-Image verwendet wie folgt, wenn man nicht als root-User (z.B. richtig mit dem User "pi") angemeldet ist:
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash - sudo apt-get install -y nodejs
Für nodejs 12 einfach in der URL oben anstelle der 10 eine 12 reinpacken.
Für macOS gibt einen Installer auf https://nodejs.org/en/download/ , den man einfach ausführt.
Ob die Aktualisierung geklappt hat, kann man wieder mit dem Befehl
node -vüberprüfen.
-
Da die Installation von Node.js einige Einstellungen am System verändert haben kann, ist es jetzt ratsam, den ioBroker-Installationsfixer aufzurufen. Das geschieht mit dem Befehl
curl -sL https://iobroker.net/fix.sh | bash -Er stellt unter anderem die für den Betrieb von ioBroker notwendigen Sicherheitseinstellungen wieder her.
-
Bei einer Aktualisierung von Node.js müssen bereits installierte JavaScript- Module im ioBroker-Ordner aktualisiert werden, da sonst Fehler bei deren Ausführung auftreten.
Um diese zu aktualisieren gibt es mehrere Möglichkeiten:
a) ab js-controller 3.0: Automatischer Rebuild
ioBroker versucht seit dem js-controller 3.0 automatisch Adapter zu erkennen die nicht starten weil Sie aktualisiert werden müssen. Dies funktioniert so das die typischen Fehlermeldungen erkannt werden und ioBroker dann die Aktualisierung versucht. Zuerst wird ein "rebuild" des betroffenen Adapters ausgeführt, falls das nicht hilft werden die Adapter-Abhängigkeiten aktualisiert. Daher kann es sein das der Adapter mehrfach ersucht wird neu zu starten. Hier bitte Geduld haben!
Bei einigen Adaptern (zB iot die optionale native Abhängigkeiten haben) funktioniert die automatische Erkennung nicht und das rebuild muss manuell angestoßen werden. Hier zu gibt esiobroker rebuild adapternameund falls das nicht reichtiobroker rebuild adaptername --install. Das einfach manuell ausführen. Damit sollte alles idealerweise automatisiert erledigt sein. Falls hie rirgendetwas gar nicht geht dann helfen die weiteren Optionen.b) npm rebuild
Der erste Versuch sollte immer mit dem Befehl "npm rebuild" im ioBroker Verzeichnis stattfinden, weil dies am saubersten funktioniert und direkt von der Paketverwaltung ausgeführt wird. Im Idealfall dauert das ein paar Minuten und es könnten ein paar Warnungen gelistet werden.
Falls es aber Fehler gibt, werden wir zusammen versuchen im nächsten Post alle bekannten Fälle mit Ihren Lösungsansätzen zu sammeln. Wenn das funktioniert ist dies der schnellste und sauberste Weg.c) reinstall-Skript
Sollte das nicht klappen, beinhaltet der js-Controller ein reinstall-Skript ("reinstall.sh" bzw. ab js-controller 1.5.x "reinstall.js"). Dieses Skript erkennt alle installierten ioBroker-Adapter, löscht diese dann aus dem node_modules-Verzeichnis und installiert sie neu. Dieser Ansatz ist etwas aufwändiger als "npm rebuild", erfüllt aber den gleichen Zweck. Das funktioniert generell gut, man sollte den Prozess aber nicht abbrechen. Falls es doch passiert oder es Probleme beim Starten nach dieser Prozedur gibt, dann am besten den Weg im nächsten Punkt wählen.
Das reinstall.sh-Skript welches im js-controller 1.4 mitgeliefert wurde hat ein Formatierungsproblem und muss vorher noch für Linux mit den Befehlencd /opt/iobroker sudo mv reinstall.sh reinstall.dos sudo tr -d '\r' < reinstall.dos > reinstall.sh sudo chmod +x reinstall.shkorrigiert werden, damit es funktioniert.
d) Reset aller Module in node_modules
Eine weitere Variante, die gründlich ist, aber etwas Zeit kostet, ist der Ansatz einfach alles Alte unter Beibehaltung der Daten und Einstellungen neu zu installieren. Wichtig ist, das iobroker-data Verzeichnis nicht zu verändern. Häufig können mit dieser Vorgehensweise auch andere (verborgene) Installationsfehler repariert werden.Dazu löscht man zuerst das gesamte node_modules Verzeichnis im ioBroker-Verzeichnis.
cd /opt/iobroker sudo rm -r node_modules/Nachdem der Befehl abgesetzt wurde, fragt das Programm, ob in den Ordner "hinabgestiegen" werden soll (sofern es ein tieferer Unterordner ist) und ob der (schreibgeschützte) Ordner wirklich gelöscht werden soll - beides bestätigt man mit "Ja" (j) oder "Yes" (y).
Danach installiert man den Controller in der relevanten Version (hier z.B. 2.2.8 der zum Zeitpunkt des Schreibens die aktuelle "Stable"-Version ist):
npm install iobroker.js-controller@2.2.8 --productionAnschließend startet man ioBroker.
iobroker startioBroker wird korrekterweise feststellen, dass die Adapter, die er starten will, nicht installiert sind - und diese einfach automatisch nachinstallieren. Je nach System kann dies einige Zeit dauern - gern auch ein paar Stunden (oder bei langsamen SD-Karten die ganze Nacht). Aber danach ist alles aktualisiert. Der Installationsfortschritt ist im Admin im Log-Fenster zu sehen.
Zu beachten ist, dass Adapter, die man manuell von GitHub installiert hat, den Fehler
Can not parse null/io-package.json:Error: ENOENT: no suche file or directory ...im ioBroker-Log erzeugen.
Diese Adapter nach Abschluss der automatischen Installationssequenz wie gehabt über das Adapterfenster manuell von GitHub nachinstallieren und nach der Installation die bestehende diesbezügliche Instanz von Hand starten.Ratsam ist es auch, im Log nach der Installation nach dem Wort
yourselfzu suchen. Hier werden ggf. npm-Module angezeigt, die nicht automatisch installiert wurden. Sie können/sollten manuell über die Kommandozeile mitnpm i <Packetname>@<version>, ausgeführt im iobroker-Ordner, nachinstalliert werden. Dazu zuerst den ioBroker stoppen, npm ausführen und dann den ioBroker wieder starten.Wenn man dabei npm als root-User per Hand in der Kommandozeile ausgeführt hat, schlage ich zur Korrektur eventueller Berechtigungsfehler vor, vor dem Start von ioBroker das Fixerscript laufen zu lassen.
cd /opt/iobroker iobroker stop npm i <Packetname>@<version> curl -sL https://iobroker.net/fix.sh | bash - iobroker starte) Neuinstallation mit Restore
Eine kleine Abwandlung der letzten Variante ist eine Neuinstallation. Hierbei sichert man das "iobroker-data" Verzeichnis (oder nutzt das Backup von oben). Dann löscht man das gesamte ioBroker-Verzeichnis und nutzt den Installer.cp -r /opt/iobroker/iobroker-data <Pfad_zum_sicheren_Ort> sudo rm -r /opt/iobroker/ sudo mkdir /opt/iobroker cd /opt/iobroker curl -sL https://iobroker.net/install.sh | bash -Direkt danach stoppt man ioBroker wieder (der ja nach der Installation automatisch gestartet wird).
iobroker stopDann löscht man den neu erstellen „iobroker-data“- Ordner und kopiert anschließend das gesicherte alte „iobroker-data“-Verzeichnis mit den darin enthaltenen Datenbanken und Dateien dorthin zurück.
rm -r /opt/iobroker/iobroker-data cp -r <Pfad_zum_sicheren_Ort> /opt/iobroker/iobroker-dataAnschließend wieder ioBroker starten. Der Rest läuft dann wie bei c) und dauert seine Zeit.
5. Zu guter Letzt
Bitte gebt euer Feedback, was bei euch wie gut funktioniert, was ihr immer nutzt und was die Probleme und eure Lösungen sind.
Viele Grüße,
apollon77
stabilostick@stabilostick Hallo - gibts es schon einen Updater für Windows? HAbe iobroker mit dem Windows Installer installiert - scheitere aber immer am Update der node.js bzw. der js-controller Versionen.
Gruß peter -
-
@stabilostick Hallo - gibts es schon einen Updater für Windows? HAbe iobroker mit dem Windows Installer installiert - scheitere aber immer am Update der node.js bzw. der js-controller Versionen.
Gruß peter@ps1304 sagte in [How-to] Node.js für ioBroker richtig updaten:
@stabilostick Hallo - gibts es schon einen Updater für Windows? HAbe iobroker mit dem Windows Installer installiert - scheitere aber immer am Update der node.js bzw. der js-controller Versionen.
Gruß peterhttps://forum.iobroker.net/post/446928
Node Update:
1: Konsole: iobroker stop 2: Sicherung des Ordners: C:\Program Files\iobroker\deinhostname\nodejs auf dem Desktop 3: Download der benötigten Node.js Version unter https://nodejs.org als Archiv nicht als msi Datei 4: Entpacken des Downloads und kopieren den Gesamten Ordners über den vorhandenen C:\Program Files\iobroker\deinhostname\nodejs Ordner. 5: Kopiere aus der Sicherungskopie des Desktops die Datei nodevars.bat in den Ordner C:\Program Files\iobroker\deinhostname\nodejs 6: Konsole: iobroker start -
@ps1304 sagte in [How-to] Node.js für ioBroker richtig updaten:
@stabilostick Hallo - gibts es schon einen Updater für Windows? HAbe iobroker mit dem Windows Installer installiert - scheitere aber immer am Update der node.js bzw. der js-controller Versionen.
Gruß peterhttps://forum.iobroker.net/post/446928
Node Update:
1: Konsole: iobroker stop 2: Sicherung des Ordners: C:\Program Files\iobroker\deinhostname\nodejs auf dem Desktop 3: Download der benötigten Node.js Version unter https://nodejs.org als Archiv nicht als msi Datei 4: Entpacken des Downloads und kopieren den Gesamten Ordners über den vorhandenen C:\Program Files\iobroker\deinhostname\nodejs Ordner. 5: Kopiere aus der Sicherungskopie des Desktops die Datei nodevars.bat in den Ordner C:\Program Files\iobroker\deinhostname\nodejs 6: Konsole: iobroker start -
@sigi234 Bist Du schon auf dem neuen JS-controller "stable" ?
Wie bist Du dorthin gekommen?
Direkt aus der aktiven Instanz oder erst mit dem Installer eine neuen Instanz erzeugt, damit man noch eine Rückfallösung hat?@klassisch sagte in [How-to] Node.js für ioBroker richtig updaten:
@sigi234 Bist Du schon auf dem neuen JS-controller "stable" ?
Wie bist Du dorthin gekommen?
Direkt aus der aktiven Instanz oder erst mit dem Installer eine neuen Instanz erzeugt, damit man noch eine Rückfallösung hat?Via Konsole im iob Verzeichnis des Host

iobroker stop iobroker update iobroker upgrade self iobroker start -
@klassisch sagte in [How-to] Node.js für ioBroker richtig updaten:
@sigi234 Bist Du schon auf dem neuen JS-controller "stable" ?
Wie bist Du dorthin gekommen?
Direkt aus der aktiven Instanz oder erst mit dem Installer eine neuen Instanz erzeugt, damit man noch eine Rückfallösung hat?Via Konsole im iob Verzeichnis des Host

iobroker stop iobroker update iobroker upgrade self iobroker start@sigi234 sagte in [How-to] Node.js für ioBroker richtig updaten:
@klassisch sagte in [How-to] Node.js für ioBroker richtig updaten:
Via Konsole im iob Verzeichnis des Hostiobroker stop iobroker update iobroker upgrade self iobroker startvielen Dank! Habe das jetzt auch mal getestet. Sieht so weit ganz gut aus:
C:\Program Files\iobroker\ioBrMain026>iobroker upgrade self Update js-controller from @3.1.6 to @3.2.16 NPM version: 6.11.3 npm install iobroker.js-controller@3.2.16 --loglevel error --unsafe-perm (System call) node-aead-crypto not needed on this system, since all ciphers are natively supported Starting node restart.js C:\Program Files\iobroker\ioBrMain026>iobroker start 2021-02-27 01:34:12,418 INFO - Starting the service with id 'iobroker(ioBrMain026)' C:\Program Files\iobroker\ioBrMain026>scheint so weit funktioniert zu haben. Alle Instanzen grün.
-
Hallo,
ich bin neu hier und auch neu bei iobroker auf Windows, ioBroker auf Raspi läuft seit einem Jahr stabil.
Ich habe die Installation nach den Angaben hier richtig erstellt, leider öffnet sich das Skriptmenue nicht.
Festgestellt habe ich, daß in der Info angezeigt wird: Nodejs V10.17.0 sei installiert, empfohlen sei V12.21.0 und mit der Konsole habe ich festgestellt, daß tatsächlich 14.6.0 installiert ist.
Liegt hier der Fehler und wie kann ich ihn beheben? Die Javascriptinstanz ist V5.1.1Weiß jemand einen Rat?
-
Hallo,
ich bin neu hier und auch neu bei iobroker auf Windows, ioBroker auf Raspi läuft seit einem Jahr stabil.
Ich habe die Installation nach den Angaben hier richtig erstellt, leider öffnet sich das Skriptmenue nicht.
Festgestellt habe ich, daß in der Info angezeigt wird: Nodejs V10.17.0 sei installiert, empfohlen sei V12.21.0 und mit der Konsole habe ich festgestellt, daß tatsächlich 14.6.0 installiert ist.
Liegt hier der Fehler und wie kann ich ihn beheben? Die Javascriptinstanz ist V5.1.1Weiß jemand einen Rat?
@frihu sagte in [How-to] Node.js für ioBroker richtig updaten:
Javascriptinstanz ist V5.1.1
Ist eine Beta-Version, bei der durch das Beta-Testing aufgefallen ist das da ein Fehler drin ist. Installier die Stabile Version 5.0.4.
Dein node solltest du allerdings auch mal dringend anschauen. Mir ist aber nicht ganz klar ob da bei dir nun Windows oder Linux läuft.
-
@frihu sagte in [How-to] Node.js für ioBroker richtig updaten:
Javascriptinstanz ist V5.1.1
Ist eine Beta-Version, bei der durch das Beta-Testing aufgefallen ist das da ein Fehler drin ist. Installier die Stabile Version 5.0.4.
Dein node solltest du allerdings auch mal dringend anschauen. Mir ist aber nicht ganz klar ob da bei dir nun Windows oder Linux läuft.
@thomas-braun
Habe gerade die beiden JS-Adapter verglichen und festgestellt, daß der eine V5.1.1 ist und der andere 5.0.14. Habe den neuen auf 5.0.14 zurückgedreht und schon funktioniert es bestens!
Vielen Dank für den Hinweis.@thomas-braun said in [How-to] Node.js für ioBroker richtig updaten:
@frihu sagte in [How-to] Node.js für ioBroker richtig updaten:
Javascriptinstanz ist V5.1.1
Ist eine Beta-Version, bei der durch das Beta-Testing aufgefallen ist das da ein Fehler drin ist. Installier die Stabile Version 5.0.4.
Dein node solltest du allerdings auch mal dringend anschauen. Mir ist aber nicht ganz klar ob da bei dir nun Windows oder Linux läuft.
-
@thomas-braun
Habe gerade die beiden JS-Adapter verglichen und festgestellt, daß der eine V5.1.1 ist und der andere 5.0.14. Habe den neuen auf 5.0.14 zurückgedreht und schon funktioniert es bestens!
Vielen Dank für den Hinweis.@thomas-braun said in [How-to] Node.js für ioBroker richtig updaten:
@frihu sagte in [How-to] Node.js für ioBroker richtig updaten:
Javascriptinstanz ist V5.1.1
Ist eine Beta-Version, bei der durch das Beta-Testing aufgefallen ist das da ein Fehler drin ist. Installier die Stabile Version 5.0.4.
Dein node solltest du allerdings auch mal dringend anschauen. Mir ist aber nicht ganz klar ob da bei dir nun Windows oder Linux läuft.
@frihu said in [How-to] Node.js für ioBroker richtig updaten:
@thomas-braun
Habe gerade die beiden JS-Adapter verglichen und festgestellt, daß der eine V5.1.1 ist und der andere 5.0.14. Habe den neuen auf 5.0.14 zurückgedreht und schon funktioniert es bestens!
Vielen Dank für den Hinweis.@thomas-braun said in [How-to] Node.js für ioBroker richtig updaten:
@frihu sagte in [How-to] Node.js für ioBroker richtig updaten:
Javascriptinstanz ist V5.1.1
Ist eine Beta-Version, bei der durch das Beta-Testing aufgefallen ist das da ein Fehler drin ist. Installier die Stabile Version 5.0.4.
Dein node solltest du allerdings auch mal dringend anschauen. Mir ist aber nicht ganz klar ob da bei dir nun Windows oder Linux läuft.
-
@thomas-braun
Habe gerade die beiden JS-Adapter verglichen und festgestellt, daß der eine V5.1.1 ist und der andere 5.0.14. Habe den neuen auf 5.0.14 zurückgedreht und schon funktioniert es bestens!
Vielen Dank für den Hinweis.@thomas-braun said in [How-to] Node.js für ioBroker richtig updaten:
@frihu sagte in [How-to] Node.js für ioBroker richtig updaten:
Javascriptinstanz ist V5.1.1
Ist eine Beta-Version, bei der durch das Beta-Testing aufgefallen ist das da ein Fehler drin ist. Installier die Stabile Version 5.0.4.
Dein node solltest du allerdings auch mal dringend anschauen. Mir ist aber nicht ganz klar ob da bei dir nun Windows oder Linux läuft.
-
Hi guys! I am quite new to iobroker but really like how it works and how flexible it is. I am driving an VW ID.3 so this adapter is the best thing that happened since I picked up my car.
I have one concern though, and it is probably more connected to VW API etc. I would most of all be able to fetch the current mileage of the car. This seems not to be possible in the adapter. I know that VWs own app is a bit poor when it comes to this, but are there any possibilities to open for this? Also, lock state for the doors would be nice to integrate with the smart home.
Thanks for reading!