rdmtc / RedMatic

Node-RED packaged as Addon for the Homematic CCU3 and RaspberryMatic 🤹‍♂️
Apache License 2.0
534 stars 47 forks source link

(Frage) Wie kann ich in einem Function node andere npm Pakete benutzen? #30

Closed Hypnos3 closed 6 years ago

Hypnos3 commented 6 years ago

Kein issue, sondern mehr eine Frage:

mit dem Modul node-red-contrib-unsafe-function

Kann ich damit auch per require auf npm module zugreifen:

var osInfo = require('os');
msg.payload = osInfo.cpus();
return msg;

Wie kann ich selber npm module instillieren, auf welche ich da zugreifen kann?

Wenn ich auf der Console das Paket "lower-case" installiere (als Test):

export PATH=/usr/local/addons/redmatic/bin:$PATH
cd /usr/local/addons/redmatic/var
npm install --save --save-prefix="~" --production lower-case

und in dem function node folgendes eingebe:

//syntax to install a specific version
var lowerCase = require('lower-case')

msg.payload = lowerCase('Hello World');
return msg;

Funktioniert leider das nicht, weil "lower-case" nicht bekannt ist.

Das Modul node-red-contrib-function-npm habe ich auch schon probiert. Hier wird zwar etwas installiert, aber das Modul auch nicht gefunden.

hobbyquaker commented 6 years ago

Ich verstehe nicht so ganz in welchen Pfaden node-red-contrib-unsafe-function bzw require-from-string nach Modulen sucht. Müsste man mal den Source lesen und verstehen, durch ein paar einfache Tests kam ich nicht drauf. Ein unschöner aber möglicher Workaround wäre ein absoluter Pfad: const lowerCase = require('/usr/local/addons/redmatic/var/node_modules/lower-case');

Hypnos3 commented 6 years ago

Vielen Dank, das mit dem absoluten Pfad bringt mich erst mal weiter.

Ich hab mir zwar den Quellcode von require-from-string angesehen, da bin ich aber zu sehr Anfänger um das komplett zu verstehen.