はじめに
今回は Node-RED について、以下を試したり確認したりします。
- Functionノードでモジュールのインポート
- ローカルインストールした Node-RED でその環境独自の設定を使う
上記2つ目は、以下の記事や過去の記事で使ったことがあるやり方(Node-RED のローカルインストールをした環境で使う形)で試しています。その環境を利用する際の環境設定を、PC内の他で使っているものと共用する形ではなく、独自のものにできないかという意図でやったものです。
●【小ネタ】 Node-RED の Functionノードで await を使う簡単なテスト - Qiita
https://qiita.com/youtoy/items/615293f7dbcae0f6cdca
Functionノードでモジュールのインポート
まず1つ目の Functionノードでのモジュールのインポートを試します。
必要な設定
これについては、Node-RED の設定(settings.js)で functionExternalModules: true
となっている必要があるようです。これが true の状態になっていることを確認して、この先の内容を進めていきます。
uuid のインストール
今回の Functionノードでのモジュールのインポートのお試しは、uuid を使ってシンプルにやってみます。その uuid は、以下のコマンドでインストールします。
npm i uuid
uuid の読み込み
Node-RED上の Functionノードでモジュールをインポートします。
そのために、まずは以下のお試し用のフローを作りました。構成は、「Injectノードの操作部分をクリックしたら、Functionノードの処理が実行されて、結果がデバッグ出力される」というシンプルなものです。
ここで、Functionノードの以下の「設定」タブを開き、以下の「追加」ボタンを押します。
その後、モジュール名・インポート名を設定します。どちらの内容も、以下のように uuid にしました。
これで、Functionノード内のコードで上記モジュールが使えるようになったようでした。
Functionノードのコードと実行結果
次に、Functionノードでコードを書きます。具体的には、以下の内容です(読みこんだモジュールが使えているかどうかを確認するだけの、シンプルな内容にしています)。
const id = uuid.v4();
msg.payload = id;
return msg;
なお上記のコード実装は、uuid の npm のページに掲載されたサンプルコードを見つつ作ったものです。
import { v4 as uuidv4 } from 'uuid';
uuidv4(); // ⇨ '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d'
実行結果
実行結果は以下の通りです。無事、uuid を使った出力を得られたことを確認できました。
ローカルインストールした Node-RED でその環境独自の設定を使う
ここからの内容は、上で書いていた試す内容の 2つ目のものです。
特別な対応をしない場合
Node-RED で使われる設定は、特別な対応をしない場合はローカルインストールした Node-RED でも、他と共用される設定を使う形になるようです。
それについては、以下の「設定ファイルはデフォルトで userDir内のものを使う」「userDir はデフォルトで ~/.node-red
となる」という内容が関係していそうなところです。
https://nodered.jp/docs/getting-started/local
普段はこのデフォルト設定で使っていても、特に困ることはない状況ではあります。
設定を独自のものにする
独自設定を使うという話の実現方法は、独自で用意した settings.js を以下のようにコマンドの中に含めてやれば良さそうです(※ Node-RED をローカルインストールしているので、起動コマンドは npx node-red
を使っていた状況で、これに --settings 【settings.js を置いたフォルダのパス】/settings.js
の部分を足しています)。
npx node-red --settings ./settings.js
これで、設定を他と共用する形ではなく、その環境独自のものにできそうです。
なお、ユーザーディレクトリも独自のものにしたい場合は、さらに --userDir 【特定のフォルダのパス】
をつければ良さそうです。