node-redでrequireを使うには・・・
起動時にSettings file : \Users\ken.yuasa.node-red\settings.js
が読み込まれている旨の表示がある・・・
C:\Users\ken.yuasa>node-red
4 Feb 14:06:49 - [info]
Welcome to Node-RED
4 Feb 14:06:49 - [info] Node-RED version: v0.19.5
4 Feb 14:06:49 - [info] Node.js version: v10.15.0
4 Feb 14:06:49 - [info] Windows_NT 10.0.17763 x64 LE
4 Feb 14:06:50 - [info] Loading palette nodes
4 Feb 14:06:52 - [warn] rpi-gpio : Raspberry Pi specific node set inactive
4 Feb 14:06:52 - [warn] ------------------------------------------------------
4 Feb 14:06:52 - [warn] [node-red/tail] Not currently supported on Windows.
4 Feb 14:06:52 - [warn] ------------------------------------------------------
4 Feb 14:06:52 - [info] Settings file : \Users\ken.yuasa.node-red\settings.js
4 Feb 14:06:52 - [info] HTTP Static : C:\Users\ken.yuasa\node_modules\node-red\public
4 Feb 14:06:52 - [info] Context store : 'default' [module=memory]
4 Feb 14:06:52 - [info] User directory : \Users\ken.yuasa.node-red
4 Feb 14:06:52 - [warn] Projects disabled : editorTheme.projects.enabled=false
4 Feb 14:06:52 - [info] Flows file : \Users\ken.yuasa.node-red\flows_yuasa-dw800g1.json
4 Feb 14:06:52 - [warn]
この\Users\ken.yuasa.node-red\settings.js上に読み込みたいjsについて設定を書く必要がある
例
functionGlobalContext: {
sensor1:require('./sensors/sensor1.js')
// os:require('os'),
// jfive:require("johnny-five"),
// j5board:require("johnny-five").Board({repl:false})
},
ちなみに./sensors/sensor1.jsというのは設定ファイルが置いてある場所に配置してある・・・
呼び出す側(functionタグの中身)は以下のように書く必要がある・・・
var sensor = new global.get('sensor1')
msg.payload=sensor.get();
return msg;
functionGlobalContext: {
sensor1:require('./sensors/sensor1.js'),
sensor1:require('./simple-bot/chat-server-bot.js'),
sensor1:require('./simple-bot/chat-server.js'),
sensor1:require('./simple-bot/make-dic.js')
// os:require('os'),
// jfive:require("johnny-five"),
// j5board:require("johnny-five").Board({repl:false})
},
Error: Cannot find module 'mongodb'
あらかじめ入れとかないとダメらしい・・・
追加モジュールのロード
Functionノードに追加モジュールを直接ロードすることはできません。 settings.jsファイルでロードし、 functionGlobalContextプロパティに追加される必要があります。
例えば、os組込みモジュールはsettings.jsファイルに以下の設定を追加することによって、 すべてのFunctionノードで利用可能になります。
functionGlobalContext: {
osModule:require('os')
}
この時点で、モジュールはFunctionノード内で以下のように参照できます。 global.get('osModule')
設定ファイルでロードされたモジュールは、設定ファイルと同じディレクトリにインストールされる必要があります。 デフォルトのユーザディレクトリ(~/.node-red)を利用しているだろうほとんどのユーザは以下のようにインストールを実行します。:
cd ~/.node-red
npm install name_of_3rd_party_module