任何节点属性都可以通过将其值设置为${ENV_VAR}形式的字符串来使用环境变量进行设置。当运行时加载流时,会在将值传递给节点之前替换该环境变量的值。
这仅在替换整个属性时有效 - 不能用于仅替换值的一部分。例如,无法使用CLIENT-${HOST}。
由于节点提供自己的编辑对话框,并非所有属性都会提供可用于输入环境变量字符串的文本输入框。在这种情况下,您可以考虑手动编辑流程文件来设置属性。
TypedInput 环境变量类型
在编辑器中,TypedInput小部件可以提供"环境变量"作为类型选项。 当选择此类型时,其值将按以下方式计算:
如果不存在${},则将整个值用作环境变量的名称。
例如,"FOO"将被替换为process.env.FOO的值
如果存在${},它会将对应的环境变量替换到结果中:
例如,给定值"Hello ${FOO}"且环境变量FOO设置为World,
这将生成值"Hello World"
环境变量可以在JSONata表达式中访问,例如在Change节点中使用$env函数:
$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 部分之外。或者,可以通过放置以下形式的语句将变量定义为 systemd 服务的一部分
ENV_VAR='foobar'
在Node-RED用户目录~/.node-red中,一个名为environment的文件里。
自 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环境变量同样会返回空字符串。
Node-RED: 面向事件驱动应用的低代码编程平台。
版权所有 OpenJS基金会 及 Node-RED 贡献者。保留所有权利。OpenJS基金会 拥有注册商标并使用商标。有关 OpenJS基金会 的商标列表,请参阅我们的 商标政策 和 商标列表。未在 OpenJS基金会商标列表 中标注的商标™或注册®商标归其各自持有人所有。使用这些商标并不意味着与它们有任何关联或获得其认可。
The OpenJS Foundation | 使用条款 | 隐私政策 | OpenJS基金会章程 | 商标政策 | 商标列表 | Cookie政策