如何解决在开始时通过命令行在Node-Red中添加全局值上下文
我想在命令行的红色节点期间添加信息。完美的解决方案将数据添加到全局上下文中。
现在,我可以启动node-red,但是我想添加args,例如myIP arg:
node-red -myIP 10.100.10.1
我可以修改red.js以获得args及其值,但是我走不远了。我不知道如何将参数值设置为全局上下文。
我尝试使用functionGlobalContext,但它不适用于数据,仅适用于函数。而且,我无法在命令行中修改settings.js。
是否有继续的线索?修改源代码不是问题,我确实需要此功能。
解决方法
您可以使用环境变量在functionGlobalContext
的{{1}}中设置变量
例如
settings.js
然后在启动Node-RED之前导出环境变量:
...
functionGlobalContext: {
foo: process.env['MYIP']
},...
或者如果只是一个env var,则可以内联它
$ export MYIP="10.100.10.1"
$ node-red
您也可以按照here的说明,直接在节点的配置中直接使用环境变量。
,我已经看到有些人想在终端的节点红色调用期间使用args。因此,我将分享我为此所做的一切。我正在Windows上工作。
如上所述,我希望它是功能性的:
node-red -myIP 10.100.10.1
我想在一开始就在Node中获取-myIP值(10.100.10.1),以便在全局上下文中进行设置。当您想从脚本(在我的示例中为python)中启动节点红色时,这特别有用。
为此,我使用了process api from nodejs。这导致具有有关进程的信息,例如带有process.argv的命令行参数。这将返回启动该过程的命令行的每个元素的数组:
process.argv ==> ['node-red','-myIP','10.100.10.1']
因此,您可以在开始插入的节点中执行此操作,并通过该对象并检测所需的每个arg并访问下一个项目以获取值。当您拥有参数的值时,只需在全局上下文中进行设置即可,例如:
global.set('IP',item)
您将在上下文中使用命令行参数。可以与任何范围的上下文(节点,流,全局)一起使用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。