NodeRed nutzt falsches NodeJS?

LisamagPferde04  03.10.2022, 12:41

Benutzt du nvm?

Dieselente2 
Fragesteller
 03.10.2022, 22:16

Jap. Darüber ist auch die v18 installiert worden.

1 Antwort

Im ersten Schritt würde ich prüfen, welche installierte Node-Version aktuell aktiv ist. Mit nvm kannst du dir zudem alle verfügbaren Node-Versionen anzeigen lassen.

node --version
nvm ls

Mit

nvm alias default 1.2.3

kannst du eine Installation als Standard festlegen. Die Versionsnummer müsstest du natürlich für dich noch anpassen. Laut Dokumentation ist Node 16.x die aktuellste Version, die von Node-RED unterstützt wird.

Die Dokumentation führt ebenso auf, dass bei einem Upgrade der Node.js-Version ein Rebuild der Module notwendig ist. Folge dazu der Anleitung.

Schau außerdem noch, ob es in deinem Node-RED-Installations-/Projektverzeichnis eine package.json gibt, die womöglich eine falsche Version unter node/engines festlegt.

Dieselente2 
Fragesteller
 04.10.2022, 17:41

Vielen Dank für die Ausführliche Erklärung. Leider hat mich das noch nicht viel weiter gebracht.

Anhand der Ausgabe würde ich mal tippen, ich habe die V16.15.1 installiert und sie ist als default gesetzt. sehe ich das richtig?

root@xxxxx:~# node --version
v16.15.1
root@xxxxxx:~# nvm ls
->     v16.15.1
        v17.3.0
        v18.3.0
       v18.10.0
         system
default -> v16.15.1

anhand der Dokumentation habe ich auch das rebuild gemacht. trotzdem startet es weiter mit Node.js V10.19.0

root@xxxxx:~/.node-red# node-red-start

Start Node-RED

Once Node-RED has started, point a browser at http://127.0.0.1:1880
On Pi Node-RED works better with the Firefox or Chrome browser

Starting as root systemd service.
4 Oct 17:35:31 - [info]
Willkommen bei Node-RED
===================
4 Oct 17:35:31 - [info] Node-RED Version: v3.0.2
4 Oct 17:35:31 - [info] Node.js  Version: v10.19.0
4 Oct 17:35:31 - [info] Linux 5.4.0 x64 LE
4 Oct 17:35:33 - [info] Paletten-Nodes werden geladen
4 Oct 17:35:36 - [info] Dashboard version 1.0.2 started at /ui
4 Oct 17:35:36 - [info] Einstellungsdatei: /root/.node-red/settings.js
4 Oct 17:35:36 - [info] Kontextspeicher: default [module=memory]
4 Oct 17:35:36 - [info] Benutzerverzeichnis: /root/.node-red
4 Oct 17:35:36 - [warn] Projekte deaktiviert: editorTheme.projects.enabled=false
4 Oct 17:35:36 - [info] Flow-Datei: /root/.node-red/flows.json
4 Oct 17:35:36 - [info] Server wird jetzt auf http://127.0.0.1:1880/ ausgeführt
4 Oct 17:35:36 - [warn]

Und das kann ich absolut nicht verstehen.
In der package.json steht folgendes, was davon bezieht sich auf die Engine?:

{
  "name": "node-red-project",
  "description": "initially created for you by Node-RED ",
  "version": "0.0.1",
  "private": true,
  "dependencies": {
    "dashboard-evi": "~1.0.2",
    "random-generator_node-red-contrib": "~1.0.0"
  }
}
0
regex9  04.10.2022, 23:28
@Dieselente2

Ja, die V16.15.1 ist deine aktuelle, globale Node-Version. Die Version 10 sehe ich in deiner Liste nicht einmal. Das bedeutet, es muss eine lokale Node-Version sein, die da aktuell verwendet wird oder ein Setting ist falsch.

Die Ausgabe von Node-RED in der Konsole (siehe Abbildung) nutzt das process.version-Property, welches sich wiederum auf die Umgebungsvariable NODE_VERSION bezieht. Schau nach, ob es eine Konfigurationsdatei gibt, die diese Variable setzt.

Suche außerdem nach Dateien wie .node-version oder .nvmrc (Letztere ist bei NPM wahrscheinlicher). Diese dienen öfter dazu, (einem Package Manager) eine Node-Version vorzugeben (oder du startest direkt eine Volltextsuche über alle Dateien mit der 10.19.0 als Suchbegriff). Du könntest auch selbst eine solche Datei in dein Projektverzeichnis/das Node-RED-Verzeichnis legen. Der Dateiinhalt wäre die Versionsnummer (16.15.1). Als Fallback dient die Angabe der Engine in der package.json. Die kannst du ebenfalls ergänzen.

"engines": { "node": ">=16.15.1" }

Möglicherweise löst das das Problem. Andernfalls könntest du noch dieses Installationsskript probieren.

0