NEWS
(gelöst) NPM-Modul "node-fetch" in der Javascript-Instanz
-
@ice987 sagte:
npm ERR! missing: node-fetch@^3.0.0, required by iobroker.javascript@5.2.8
Dann wurde es offenbar nicht installiert: Noch mal versuchen und die Log-Ausgabe beobachten.
Du solltest nicht als root unterwegs sein.
-
hab' ich:
root@iobroker-v510:/opt/iobroker# npm ls node-fetch iobroker.inst@2.0.3 /opt/iobroker ├─┬ iobroker.javascript@5.2.8 │ └── node-fetch@3.0.0 deduped └── node-fetch@3.0.0
mit v3.x gibt's einige Änderungen: https://github.com/node-fetch/node-fetch/blob/HEAD/docs/v3-UPGRADE-GUIDE.md.
require
funktioniert offenbar nicht mehr. -
@ice987 sagte: hab' ich:
Ich meinte: Aus der Konfiguration löschen, speichern und wieder eintragen - also noch mal die Installation versuchen.
@ice987 sagte in NPM-Module in der Javascript instanz:
require funktioniert offenbar nicht mehr.
Ich binde alle Module mit require ein.
-
-
@ice987
Gerade bei mir getestet:
node-fetch wurde unter /opt/iobroker/node_modules/iobroker.javascript/node_modules installiert, require will aber unter /opt/iobroker/node_modules darauf zugreifen, wo es nicht installiert ist. -
@paul53 sagte in NPM-Module in der Javascript instanz:
Ich meinte: Aus der Konfiguration löschen, speichern und wieder eintragen - also noch mal die Installation versuchen.
nun funktioniert es!
Vielen Dank!
-
@ice987 sagte in (gelöst) NPM-Module in der Javascript instanz:
iobroker.inst@2.0.3 /opt/iobroker ├─┬ iobroker.javascript@5.2.8 │ └── node-fetch@3.0.0 deduped └── node-fetch@3.0.0
Hast du zufällig
node-fetch
mal innerhalb/opt/iobroker
händisch nachinstalliert?
Das sieht aus, als würde es auch in/opt/iobroker/package.json
stehen, wo es definitiv nicht hingehört. -
@alcalzone
leider ist das so, ja. -
@ice987 Dann am besten mal entfernen, das dürfte nämlich die Ursache für solche Probleme sein.
cd /opt/iobroker npm uninstall node-fetch
-
root@iobroker-v510:/opt/iobroker# cd /opt/iobroker root@iobroker-v510:/opt/iobroker# npm uninstall node-fetch npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.3.2 (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":"x64"}) removed 19 packages and audited 1289 packages in 35.686s 102 packages are looking for funding run `npm fund` for details found 64 vulnerabilities (5 low, 21 moderate, 35 high, 3 critical) run `npm audit fix` to fix them, or `npm audit` for details root@iobroker-v510:/opt/iobroker# npm ls node-fetch iobroker.inst@2.0.3 /opt/iobroker └─┬ iobroker.javascript@5.2.8 └── node-fetch@3.0.0
die "Zusätzlichen NPM-Module" im Javascript-Adapter wurden vorher entfernt und sind aktuell nicht drin. Ist die Installation so nun in Ordnung?
Das Skript scheint zu funktionieren...
-
@ice987 Das sieht besser aus. Wenn du solche Probleme künftig vermeiden willst, am besten noch all die anderen Pakete deinstallieren, die unnötigerweise in
/opt/iobroker/package.json
stehen. Da sollten ausschließlich dependencies drin sein, die mitiobroker.
oder@iobroker/
beginnen.Vorsichtshalber mal ein Backup vorher fahren
-
@alcalzone
wunderbar!hab' gerade gekuckt in
/opt/iobroker/package.json
: alles fängt mitiobroker.
oder@iobroker/
an ausser:"colors": "^1.3.3", "fs-extra": "^7.0.1" "iobroker": "^2.0.3", "semver": "^5.6.0", "yargs": "^7.0.2"
alles stehen lassen?
-
@ice987
iobroker
drin lassen. Der Rest dürfte raus können. -
@alcalzone
ok, hab alles gelistete entfernt (ausseriobroker
). Nun habe ich aber erneut das Problem mit dem Error:Module sind wie folgt eingetragen:
error wie folgt:
14:52:47.875 error javascript.2 (185) script.js.08_Wetterstation.082_Meteoblue: Error: Cannot find module '/opt/iobroker/node_modules/iobroker.javascript/lib/../../node-fetch'
root@iobroker-v510:/opt/iobroker# npm ls node-fetch iobroker.inst@2.0.3 /opt/iobroker └─┬ iobroker.javascript@5.2.8 └── node-fetch@3.0.0
-
@ice987 entferne es mal, starte den Adapter neu, dann füge es wieder hinzu.
-
@alcalzone
ich habe alles hier
entfernt, Instanz neu gestartet, der error bleibt.node-fetch
wieder hinzugefügt, Instanz heu gestartet, Fehler bleibt. -
@ice987 sagte: error wie folgt:
Wie ist es in das Skript eingebunden?
-
aktuell (zu Testzwecken) nur so:
const fetch = require('node-fetch');
welches bereits den Fehler ergibt:
-
@ice987
require erwartet es im Verzeichnis /opt/iobroker/node_modules, wo es offenbar nicht (mehr) installiert ist.Error: Cannot find module '/opt/iobroker/node_modules/iobroker.javascript/lib/../../node-fetch'
import reagiert anders.
-
Dann ist da im Adapter irgendwas faul...
import
wird unter der Haube inrequire
umgeschrieben, sollte sich also gleich verhalten.@ice987 Probier mal als Workaround:
cd /opt/iobroker/node_modules/iobroker.javascript npm install --production