NEWS
JS instanzen mit unterschiedlichen Serialport versionen?
-
@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.