• V
 

環境変数を利用する

ノードのプロパティとして設定する

${ENV_VAR}という形式の文字列を値として設定することで、ノードのプロパティに環境変数を設定することができます。 ランタイムがフローを読み込んだとき、 ノードに文字列が渡される前に環境変数の値が代わりに使われます。

これはプロパティがまるごと置換できる場合のみ動作します - 値の一部だけに代入することはできません。 例えば、CLIENT-${HOST}を使うことはできません

ノードはそれぞれの編集ダイアログを提供しているため、 全てのプロパティが環境変数の文字列を入力できるようなテキスト入力欄を提供しているわけではありません。 この場合、プロパティを設定するためにフローファイルを直に編集することを考えることができるかもしれません。

TypedInputウィジェットとして利用する

TypedInput Environment Variable

TypedInput環境変数型

エディタ内で、TypedInputウィジェットは型として「環境変数」を提供することができます。 この型が選択されたとき、この値は以下のように評価されます。

  • ${}が存在しない場合、値全体を環境変数名として利用します。 例えば、 "FOO"process.env.FOOの値に置換されます。

  • ${}が存在する場合、評価結果には対応する環境変数が代用されます: 例えば、 "Hello ${FOO}"という値で環境変数FOOWorldが設定されている場合、 この結果は"Hello World"という値になります。

JSONata式

ChangeノードのようなノードからJSONana式の中で$env関数を利用することによって、 環境変数にアクセスすることができます。

$env('ENV_VAR')

Functionノード

Functionノード内で、 環境変数はenv.get関数を利用することによってアクセスすることができます:

let foo = env.get("FOO");

Templateノード

Node-RED 3.0以降

templateノードは以下のシンタックスを利用することで環境変数にアクセスすることができます:

My favourite colour is {{env.COLOUR}}.

サブフローインスタンスプロパティ

0.20版以降、サブフローはインスタンスプロパティを設定できます。 これらは環境変数としてサブフロー内に表示され、 サブフローの個々のインスタンスにあわせてカスタマイズすることができます。

例えば、異なる種類のレコードへのアクセスを提供するREST APIがあり、 環境変数を利用してアクセスする必要があるレコードの種類を識別し、 サブフローはそのAPIにアクセスしてレスポンスを処理するように作成することができます。 そして、サブフローの個々のインスタンスをそれらの特定の種類にあわせてカスタマイズすることができます。

フロー/グループレベルの環境変数

Node-RED 2.1以降

フローまたはグループレベルの環境変数を設定することができます。フローまたはグループの編集ダイアログの適切なタブで実行できます。

Global environment variables

Since Node-RED 3.1

Environment variables can be set at a global level within the editor. This is done in the User Settings dialog.

ネストされた環境変数にアクセスする

サブフローで環境変数にアクセスするとき、 Node-REDはサブフローのプロパティを検索してから サブフローが属しているフロー(サブフロー自体であることもあります)を検索します。

場合によっては、「ローカル」の値を参照せず、 「親」レベルの環境変数にアクセスするほうが有用なことがあります。 変数名の前に$parent.をつけることで実現できます。

サービスとして実行する

提供されているスクリプトを理いようシてインストールされ、Node-REDをサービスとして実行されているとき、呼び出しプロセスだけに定義されている環境変数にアクセスすることはできません。この場合、環境変数は設定ファイルに以下のように追加することで定義できます:

process.env.FOO='World';

module.exportsのセクションの外側に配置してください。もしくは、変数をsystemdサービスの一部として以下のような形式の宣言として、

ENV_VAR='foobar'

Node-REDユーザディレクトリ~/.node-red内のenvironmentという名称のファイル内に配置することで定義できます。

ビルトイン環境変数

Node-RED 2.2以降

Node-REDはノード、フロー、グループに関する情報を公開するために環境変数を定義しています。

この情報は、ワークスペース内のノードの「配置」を助けます。ワークスペース内のノードはフローの一部として存在しています。同じようにノードは(ない場合もあります)グループの一部かもしれません。ノード、フロー、グループは、Node-REDが生成したそれぞれ一意となるIDが与えられています。

ノード、フロー、グループはすべてnameプロパティをサポートしており、これはプロパティを編集するときに変更することができます。

以下の環境変数は指定されたノードの情報にアクセスするために利用することができます:

  • NR_NODE_ID - ノードのID
  • NR_NODE_NAME - ノードの名前
  • NR_NODE_PATH - ノードのパス。これはフローでのノードの位置を示します。/はフロー、サブフロー、ノードのIDを区切ります。
  • NR_GROUP_ID - 所属しているグループのID
  • NR_GROUP_NAME - 所属しているグループの名前
  • NR_FLOW_ID - ノードが存在するフローのID
  • NR_FLOW_NAME - ノードが存在するフローの名前
  • NR_SUBFLOW_NAME - the Name of the containing subflow instance node (since Node-RED 3.1)
  • NR_SUBFLOW_ID - the ID of the containing subflow instance node (since Node-RED 3.1)
  • NR_SUBFLOW_PATH - the Path of the containing subflow instance node (since Node-RED 3.1)

Node-REDによって生成されたIDは一意であることが保証されていますが、名前はそうではないことに注意してください。ノード、フロー、グループが与えられた名前を持っていない場合、対応する環境変数は空の文字列となります。ノードがグループの一部ではない場合、そのグループID環境変数も空文字列となります。