LoginSignup
1
3

More than 5 years have passed since last update.

node-redでrequireを使うには・・・

Posted at

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

1
3
10

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3