NEWS
JS instanzen mit unterschiedlichen Serialport versionen?
-
Hi,
ich habe mir zum testen eine weitere Javascript Instanz 3 v5.2.21 auf einem Slave installiert.
Javascript 2 läuft dort schon und hat Serialport 9.2.8 installiert:
pi@iobroker-garage-gross:/opt/iobroker $ npm ls serialport iobroker.inst@2.0.3 /opt/iobroker ├─┬ iobroker.javascript@5.2.21 │ └── serialport@9.2.8 └─┬ iobroker.modbus@3.4.17 └── serialport@9.2.8 deduped
Jetzt wollte ich für die Instanz 3 die Version 10.4.0 installieren was aber nicht funktioniert.
Habe das Modul eingetragen als
serialport@10
oder auch alsserialport@10.4.0
aber es auch nach neustart des Adapters oder iobrokers kann ich im Debug log nichts von der Installation des zusätzlichen Moduls finden und wie an der Ausgabe oben zu sehen ist wurde es scheinbar auch nicht installiert.Jetzt meine Frage, ist es überhaupt möglich verschiedene Versionen für verschiedene Instanzen zu installieren?
Falls ja, was mache ich falsch?
Danke und Gruß
-
@wendy2702 Das dependency-"management" vom JS-Adapter ist dafür denke ich nicht ausgegoren genug. Die Abhängigkeiten werden direkt als Abhängigkeiten des Adapter selbst installiert. Der existiert nur 1x auf der Platte und kann damit auch nur 1x serialport als dependency haben, weil alles in die gleiche
package.json
eingetragen wird. -
@alcalzone OK. Danke.
Dann muss ich zum testen einen anderen PI nehmen.
-
@alcalzone Habe einen iobroker komplett neu installiert.
Dann im Javascript Adapter 5.4.0 das Modul Serialport 10.4.0 eingetragen:
Wurde scheinbatr auch installiert:
2022-03-15 17:36:53.521 - info: javascript.0 (7639) starting. Version 5.4.0 in /opt/iobroker/node_modules/iobroker.javascript, node: v14.19.0, js-controller: 4.0.21 2022-03-15 17:36:53.594 - info: javascript.0 (7639) npm install serialport@10.4.0 --production (System call) 2022-03-15 17:37:02.925 - info: javascript.0 (7639) > @serialport/bindings-cpp@10.7.0 install /opt/iobroker/node_modules/iobroker.javascript/node_modules/@serialport/bindings-cpp > node-gyp-build 2022-03-15 17:37:03.968 - info: javascript.0 (7639) + serialport@10.4.0 added 19 packages from 88 contributors and audited 20 packages in 7.962s 2022-03-15 17:37:04.047 - info: javascript.0 (7639) 12 packages are looking for funding run `npm fund` for details 2022-03-15 17:37:04.051 - info: javascript.0 (7639) found 0 vulnerabilities 2022-03-15 17:37:04.153 - debug: javascript.0 (7639) Loaded TypeScript definitions for node: ["node_modules/@types/node/package.json","node_modules/@types/node/index.d.ts","node_modules/@types/node/assert.d.ts","node_modules/@types/node/globals.d.ts","node_modules/@types/node/async_hooks.d.ts","node_modules/@types/node/buffer.d.ts","node_modules/@types/node/child_process.d.ts","node_modules/@types/node/cluster.d.ts","node_modules/@types/node/console.d.ts","node_modules/@types/node/constants.d.ts","node_modules/@types/node/crypto.d.ts","node_modules/@types/node/dgram.d.ts","node_modules/@types/node/dns.d.ts","node_modules/@types/node/domain.d.ts","node_modules/@types/node/events.d.ts","node_modules/@types/node/fs.d.ts","node_modules/@types/node/fs/promises.d.ts","node_modules/@types/node/http.d.ts","node_modules/@types/node/http2.d.ts","node_modules/@types/node/https.d.ts","node_modules/@types/node/inspector.d.ts","node_modules/@types/node/module.d.ts","node_modules/@types/node/net.d.ts","node_modules/@types/node/os.d.ts","node_modules/@types/node/path.d.ts","node_modules/@types/node/perf_hooks.d.ts","node_modules/@types/node/process.d.ts","node_modules/@types/node/punycode.d.ts","node_modules/@types/node/querystring.d.ts","node_modules/@types/node/readline.d.ts","node_modules/@types/node/repl.d.ts","node_modules/@types/node/stream.d.ts","node_modules/@types/node/string_decoder.d.ts","node_modules/@types/node/timers.d.ts","node_modules/@types/node/tls.d.ts","node_modules/@types/node/trace_events.d.ts","node_modules/@types/node/tty.d.ts","node_modules/@types/node/url.d.ts","node_modules/@types/node/util.d.ts","node_modules/@types/node/v8.d.ts","node_modules/@types/node/vm.d.ts","node_modules/@types/node/wasi.d.ts","node_modules/@types/node/worker_threads.d.ts","node_modules/@types/node/zlib.d.ts","node_modules/@types/node/globals.global.d.ts"] 2022-03-15 17:37:04.212 - debug: javascript.0 (7639) Loaded TypeScript definitions for request: ["node_modules/@types/request/package.json","node_modules/@types/request/index.d.ts"] 2022-03-15 17:37:04.290 - info: javascript.0 (7639) requesting all states 2022-03-15 17:37:04.293 - info: javascript.0 (7639) requesting all objects 2022-03-15 17:37:05.355 - info: javascript.0 (7639) received all states 2022-03-15 17:37:05.377 - info: javascript.0 (7639) received all objects
Nur warum habe ich danach noch diese Meldungen:
pi@iob-test:/opt/iobroker $ npm ls serialport iobroker.inst@3.0.0 /opt/iobroker ├─┬ iobroker.discovery@2.7.5 │ └── serialport@9.2.8 └─┬ iobroker.javascript@5.4.0 └── UNMET DEPENDENCY serialport@^10.4.0 npm ERR! missing: serialport@^10.4.0, required by iobroker.javascript@5.4.0
-
Nur ein Schuss in's Blaue:
Kann es sein, das serialport@10 eine nodeJS > 14 voraussetzt?Edit: Nö, es muss nur nodeJS > 10 sein.
-
Das ganze ist aus dem Thread entstanden https://forum.iobroker.net/topic/11059/script-hilfe-für-abfrage-serielle-kommunikation-gesucht/134?page=7
Du erinnerst dich bestimmt
Ich will auf einem Testsystem zum anpassen und Testen des Scripts die Version 10.4.0 sauber installieren und schaffe es nicht.
Das war auch Erfolglos:
pi@iob-test:/opt/iobroker $ cd node_modules/iobroker.javascript/ pi@iob-test:/opt/iobroker/node_modules/iobroker.javascript $ npm i serialport@10.4.0 > es5-ext@0.10.58 postinstall /opt/iobroker/node_modules/iobroker.javascript/node_modules/es5-ext > node -e "try{require('./_postinstall')}catch(e){}" npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.13 (node_modules/fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"arm"}) npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.3.2 (node_modules/mocha/node_modules/fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"arm"}) + serialport@10.4.0 added 650 packages from 441 contributors, updated 1 package and audited 678 packages in 64.805s 52 packages are looking for funding run `npm fund` for details found 2 high severity vulnerabilities run `npm audit fix` to fix them, or `npm audit` for details pi@iob-test:/opt/iobroker/node_modules/iobroker.javascript $ cd .. pi@iob-test:/opt/iobroker/node_modules $ cd .. pi@iob-test:/opt/iobroker $ npm ls serialport iobroker.inst@3.0.0 /opt/iobroker ├─┬ iobroker.discovery@2.7.5 │ └── serialport@9.2.8 └─┬ iobroker.javascript@5.4.0 └── UNMET DEPENDENCY serialport@^10.4.0 npm ERR! missing: serialport@^10.4.0, required by iobroker.javascript@5.4.0 pi@iob-test:/opt/iobroker $
An NodeJS hatte ich auch schon gedacht, bin aber auch zu dem Ergebnis gekommen das es mit 14 laufen sollte.
Hast du noch eine Idee?
-
@wendy2702 sagte in JS instanzen mit unterschiedlichen Serialport versionen?:
Hast du noch eine Idee?
Nee.
Da will man mal was 'falsch haben' und bekommt es nicht nachgestellt. -
@wendy2702 führ mal folgendes aus:
cd /opt/iobroker/node_modules/iobroker.javascript npm ls serialport
Könnte sein, dass das aus dem root-Verzeichnis nicht "sichtbar" ist.
Dein Log oben zeigt jedenfalls, dass Serialport 10 kompiliert wurde:
@serialport/bindings-cpp@10.7.0
-
@alcalzone In dem
dir
ist es sichtbar:pi@iob-test:/opt/iobroker/node_modules/iobroker.javascript $ npm ls serialport iobroker.javascript@5.4.0 /opt/iobroker/node_modules/iobroker.javascript └── serialport@10.4.0 pi@iob-test:/opt/iobroker/node_modules/iobroker.javascript $ cd /opt/iobroker/ pi@iob-test:/opt/iobroker $ npm ls serialport iobroker.inst@3.0.0 /opt/iobroker ├─┬ iobroker.discovery@2.7.5 │ └── serialport@9.2.8 └─┬ iobroker.javascript@5.4.0 └── UNMET DEPENDENCY serialport@^10.4.0 npm ERR! missing: serialport@^10.4.0, required by iobroker.javascript@5.4.0
Aber wieso ist es im Tree nicht mehr sichtbar? Ging ja noch mit Serialport 9.2.8 ???
pi@iobroker-garage-gross:/opt/iobroker $ npm ls serialport iobroker.inst@2.0.3 /opt/iobroker ├─┬ iobroker.javascript@5.2.21 │ └── serialport@9.2.8 └─┬ iobroker.modbus@3.4.17 └── serialport@9.2.8 deduped pi@iobroker-garage-gross:/opt/iobroker $
Einziger Unterschied ist die Version Javascript.
Neues System
pi@iob-test:/opt/iobroker $ iob update Used repository: beta Adapter "admin" : 5.3.1 , installed 5.3.1 Adapter "backitup" : 2.3.5 , installed 2.3.3 [Updatable] Adapter "discovery" : 2.8.0 , installed 2.7.5 [Updatable] Adapter "javascript" : 5.4.0 , installed 5.4.0 Controller "js-controller": 4.0.21 , installed 4.0.21 pi@iob-test:/opt/iobroker $ iob v 4.0.21 pi@iob-test:/opt/iobroker $ node -v v14.19.0 pi@iob-test:/opt/iobroker $ npm -v 6.14.16 pi@iob-test:/opt/iobroker $
Altes System:
pi@iobroker-garage-gross:/opt/iobroker $ iob update Used repository: Beta (latest) Adapter "admin" : 5.3.1 , installed 5.3.1 Adapter "javascript" : 5.4.0 , installed 5.2.21 [Updatable] Controller "js-controller": 4.0.21 , installed 4.0.21 Adapter "modbus" : 3.4.17 , installed 3.4.17 Adapter "rpi2" : 1.3.2 , installed 1.3.2 pi@iobroker-garage-gross:/opt/iobroker $ iob v 4.0.21 pi@iobroker-garage-gross:/opt/iobroker $ node -v v14.19.0 pi@iobroker-garage-gross:/opt/iobroker $ npm -v 6.14.16 pi@iobroker-garage-gross:/opt/iobroker $
Und natürlich die Serialport Version ist unterschiedlich.
-
@wendy2702 Eigenheiten von npm...
In /opt/iobroker gibt es eine package-lock.json, die den Dependency-Tree aus Sicht von /opt/iobroker abbildet. Daran orientiert sich npm beim ls, und diese enthält serialport 10 nicht.In /opt/iobroker/node_modules/javascript gibt es durch die Installation einer neuen Abhängigkeit dort ebenfalls eine pacakge-lock.json, die quasi das Unter-Projekt aus Sicht des js-Adapters abbildet. Darin ist auch serialport 10 enthalten. Das geht ein bisschen gegen das wie npm seit Version 5 funktioniert, aber derzeit haben wir keine bessere Lösung.
-
@alcalzone Sorry falls ich nerve.
Wie kommt denn die Version Serialport 9.2.8 in den Dependency Tree unter /opt/iobroker/ wenn dort Serialport nie installiert wurde?
-
@wendy2702 Discovery bringt den mit:
├─┬ iobroker.discovery@2.7.5 │ └── serialport@9.2.8
Und modbus:
└─┬ iobroker.modbus@3.4.17 └── serialport@9.2.8 deduped
Dadurch dass jetzt nachträglich im javascript Unterordner gezielt Abhängigkeiten nachinstalliert wurden, wurde da quasi ein neues "Projekt" aufgemacht.