任何节点属性都可以通过将其值设置为 ${ENV_VAR}
形式的字符串来使用环境变量进行设置。当运行时加载流时,它将在将值传递给节点之前替换该环境变量的值。
这仅在替换整个属性时才有效 - 它不能用于仅替换部分值。例如,使用 CLIENT-${HOST}
是不可能的。
由于节点提供了自己的编辑对话框,并非所有属性都会提供可用于输入环境变量字符串的文本输入框。在这种情况下,您可以考虑手动编辑流文件来设置属性。
TypedInput 环境变量类型
在编辑器中,TypedInput 小部件可以提供“环境变量”作为一种类型。选择此类型后,其值将按如下方式进行评估:
如果不存在 ${}
,则将整个值用作环境变量的名称。例如,"FOO"
将被替换为 process.env.FOO
的值。
如果存在 ${}
,它会将相应的环境变量替换到结果中:例如,给定值为 "Hello ${FOO}"
并且环境变量 FOO
设置为 World
,则结果为 "Hello World"
。
可以使用 $env
函数在 JSONata 表达式中(例如在 Change 节点中)访问环境变量。
$env('ENV_VAR')
在 Function 节点内,可以使用 env.get
函数访问环境变量。
let foo = env.get("FOO");
自 Node-RED 3.0 起
template
节点可以使用以下语法访问环境变量:
My favourite colour is {{env.COLOUR}}.
自 0.20 版本起,子流可以配置实例属性。这些属性在子流内部显示为环境变量,并可以为子流的各个实例进行自定义。
例如,假设有一个提供对不同类型记录访问的 REST API,可以创建一个子流来访问该 API 并处理响应,使用一个环境变量来标识应访问哪种类型的记录。然后,可以为这些特定类型自定义子流的各个实例。
自 Node-RED 2.1 起
可以在流或组级别设置环境变量。这可以在流或组的编辑对话框的相应选项卡中完成。
自 Node-RED 3.1 起
可以在编辑器内的全局级别设置环境变量。这可以在用户设置对话框中完成。
在子流中访问环境变量时,Node-RED 将搜索子流属性,然后搜索包含该子流的流(它本身也可能是一个子流)。
在某些情况下,访问“父”级环境变量而不引用“本地”值是很有用的。这可以通过在变量名前加上 $parent.
前缀来实现。
当 Node-RED 作为使用提供的脚本安装的服务运行时,它将无法访问仅在调用进程中定义的环境变量。在这种情况下,可以在设置文件中定义环境变量,方法是添加
process.env.FOO='World';
放置在 module.exports
部分之外。或者,可以通过将以下形式的语句
ENV_VAR='foobar'
放在名为 environment
的文件中,该文件位于 Node-RED 用户目录 ~/.node-red
内,来将变量定义为 systemd
服务的一部分。
自 Node-RED 2.2 起
Node-RED 定义了一组环境变量,用于公开有关节点、流和组的信息。
此信息有助于在您的工作区中“定位”节点。您工作区中的节点作为流的一部分存在。同样,一个节点可能(也可能不)是组的一部分。节点、流和组都被赋予了由 Node-RED 生成的唯一 ID。
节点、流和组都支持 name
属性,您可以在编辑属性时更改该属性。
可以使用以下环境变量来访问给定节点的此信息
NR_NODE_ID
- 节点的 IDNR_NODE_NAME
- 节点的名称NR_NODE_PATH
- 节点的路径。它表示节点在流中的位置。它是由流、封闭的子流和节点的 ID 组成的、以 /
分隔的路径。NR_GROUP_ID
- 所在组的 IDNR_GROUP_NAME
- 所在组的名称NR_FLOW_ID
- 节点所在流的 IDNR_FLOW_NAME
- 节点所在流的名称NR_SUBFLOW_NAME
- 所在子流实例节点的名称(自 Node-RED 3.1 起)NR_SUBFLOW_ID
- 所在子流实例节点的 ID(自 Node-RED 3.1 起)NR_SUBFLOW_PATH
- 所在子流实例节点的路径(自 Node-RED 3.1 起)请注意,虽然 Node-RED 生成的 ID 保证是唯一的,但名称不是。如果节点、流或组没有给定名称,则相应的环境变量将为空字符串。如果节点不属于某个组,其组 ID 环境变量也将返回空字符串。
版权所有 © OpenJS 基金会和 Node-RED 贡献者。保留所有权利。OpenJS 基金会拥有注册商标并使用商标。有关 OpenJS 基金会的商标列表,请参阅我们的商标政策和商标列表。未在 OpenJS 基金会商标列表上标明的商标和徽标是其各自所有者的商标™或注册®商标。使用它们并不意味着与其有任何关联或得到其认可。
OpenJS 基金会 | 使用条款 | 隐私政策 | OpenJS 基金会章程 | 商标政策 | 商标列表 | Cookie 政策