0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【小ネタ】Functionノードでモジュールのインポート / ローカルインストールした Node-RED でその環境独自の設定を使う

Posted at

はじめに

今回は 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ノードの処理が実行されて、結果がデバッグ出力される」というシンプルなものです。

image.png

ここで、Functionノードの以下の「設定」タブを開き、以下の「追加」ボタンを押します。

image.png

その後、モジュール名・インポート名を設定します。どちらの内容も、以下のように uuid にしました。

image.png

これで、Functionノード内のコードで上記モジュールが使えるようになったようでした。

Functionノードのコードと実行結果

次に、Functionノードでコードを書きます。具体的には、以下の内容です(読みこんだモジュールが使えているかどうかを確認するだけの、シンプルな内容にしています)。

const id = uuid.v4();
msg.payload = id;
return msg;

image.png

なお上記のコード実装は、uuid の npm のページに掲載されたサンプルコードを見つつ作ったものです。

import { v4 as uuidv4 } from 'uuid';
uuidv4(); // ⇨ '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d'

実行結果

実行結果は以下の通りです。無事、uuid を使った出力を得られたことを確認できました。

image.png

ローカルインストールした Node-RED でその環境独自の設定を使う

ここからの内容は、上で書いていた試す内容の 2つ目のものです。

特別な対応をしない場合

Node-RED で使われる設定は、特別な対応をしない場合はローカルインストールした Node-RED でも、他と共用される設定を使う形になるようです。

それについては、以下の「設定ファイルはデフォルトで userDir内のものを使う」「userDir はデフォルトで ~/.node-red となる」という内容が関係していそうなところです。

https://nodered.jp/docs/getting-started/local
image.png

普段はこのデフォルト設定で使っていても、特に困ることはない状況ではあります。

設定を独自のものにする

独自設定を使うという話の実現方法は、独自で用意した settings.js を以下のようにコマンドの中に含めてやれば良さそうです(※ Node-RED をローカルインストールしているので、起動コマンドは npx node-red を使っていた状況で、これに --settings 【settings.js を置いたフォルダのパス】/settings.js の部分を足しています)。

npx node-red --settings ./settings.js

これで、設定を他と共用する形ではなく、その環境独自のものにできそうです。

なお、ユーザーディレクトリも独自のものにしたい場合は、さらに --userDir 【特定のフォルダのパス】 をつければ良さそうです。

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?