アレコレ・ティプス

これ便利だな〜と思ったことなど

NodeRED nodegen における require を使う Nodejs モジュール ( ライブラリ ) 込みのケース

 
 
 目的
 
Nodejs のモジュールを使った Node-RED ノードジェネレータ ( node-red-nodegen ) による ノード 生成方法 を 知る
 
 
< 環境メモ >
 
Nodejs v12.16.1
Node-RED v1.0.4
MacOS High Sierra 10.13.6
 
node-red-nodegen 0.1.0 コマンドの 通常インストール済み
 

 
時間を出力するだけのオリジナルノードを生成してみる。
 
 環境準備
 
( nodejs で使える moment モジュール ( ライブラリ )  を使った Node-gen )
 
Nodejs でつかう モジュール の require 記述
ここでは moment モジュール の require 
 
 
vi ~/.node-red/settings.js
 
221行目前後の " functionGlobalContext " の項目を変更
 
 functionGlobalContext: {
        // os:require('os'),
        // jfive:require("johnny-five"),
        // j5board:require("johnny-five").Board({repl:false})
        moment: require('moment’)    // 外部モジュールの定義を追加
    },
 
コア機能に使うモジュールをインストール。
ここでは、Nodejs モジュール moment を インストール。
 
cd ~/.node-red/
npm install moment
cd
 
これでまず 手元の node-red 上で上記モジュールを使う準備は整った。
 
 
 目的となる function ノードの生成
 
node-red を起動
 
以下 パーツを配置接続
 
真ん中は 普通の function 
 

 
 

 
 
function に記述。
このパーツに 名前をつける
名前: Format date
 
・ コード
var moment = global.get('moment');
msg.payload = moment().format('MMMM Do YYYY:mm:ss a');
return msg;
 
 

 
そして デプロイ。
 
 
 動作確認
 

 
ちゃんと動作している。
 
 
 function ノードの ライブラリ 出力
 

 
“ ライブラリへ保存 "

 
js ファイルとして保存します。
 

 
こうすると 通常 の保存先は、こちら でした。
 
{ ホームディレクトリ }/.node-red/lib/functions/
 
( GUI 上では、 function 。
  CUI 上では、functions となっているのが若干 気になる。。 )
 
ls
 
Format-date.js  ->  保存できている
 
 
 
ここで node-red-nodegen コマンド を実行 !
 
node-red-nodegen ~/.node-red/lib/functions/Format-date.js
 
Success: node-red-contrib-format-date
 
と表示されました。
 
 
ls
Format-date.js                node-red-contrib-format-date/
 
 
jsファイルに定義を追加します
 
vi node-red-contrib-format-date/node.js
 
 
vm.createContext()  の前に定義を追加します。

 
package.jsonファイル の 編集。依存関係を 明記します。
 
vi node-red-contrib-format-date/package.json
 
 
"keywords”   要素の次にでも。
 

 
追記しました。

 
 
cd ~/.node-red/lib/functions/node-red-contrib-format-date
 
sudo npm link
 
( 上記 cd の コマンド 、公式に  誤記? で 存在してなかったので 若干 迷った )
 
 シンボリックリンク を生成します
 
cd ~/.node-red/
 
npm link node-red-contrib-format-date
 
 
これで 生成したノードが使用できるようになりました。
 

 
 
ノードジェネレータ の弱点を鑑みて 生成したノードが  使用できるか否かは、以下公式をチェックです👍
 
 
 
 

 
参照: Node-RED-Node-Gen 公式
素晴らしいツール作りと丁寧なドキュメントに感謝🙏