一旦Node.js脚本运行,是否可以获得UPDATED环境变量?

时间:2015-12-22 05:23:49

标签: node.js gulp environment-variables

如果节点脚本已经运行,如何检索 更新的 环境变量?

考虑以下gulp任务。如何更新环境变量Z(即,从系统上运行的其他脚本),以便函数在运行后输出不同的值?

原样,忽略其他地方设置的环境变量,函数始终输出'undefined'。

gulp.task('z', function () {
    var z;
    setInterval(function(){
        z = process.env.Z;
        console.log('Value of Z is: ' + z);
    }, 1000);

});

运行Windows 7.我已经尝试了setsetx,但没有任何内容会持续存在于正在运行的节点脚本中。我不认为这是可能的,因为你通常不能在命令提示之间传递环境变量而不重新启动它们(并使用setx)。但是再次SO用户是特别的,我以前一直感到惊讶。这甚至可能吗?

1 个答案:

答案 0 :(得分:1)

是的,这是可能的。实际上有很多选择。您可以使用进程间通信(IPC)' ...

在多个脚本之间传递变量

最简单的选择可能是通过套接字来实现,即使用redis。这样做的好处是,如果将来需要这样做,您还可以使用它在不同设备上运行的进程之间进行通信。

另一种选择是通过内置的流程信令来实现: https://nodejs.org/api/process.html#process_signal_events

还有许多其他选项/图书馆与他们的专业人士和利弊。对于可伸缩性,当您通过套接字进行通信时,可能是最好的。如果性能非常重要,您可以选择使用共享内存的选项。

在这个问题中讨论了多种选择; What's the most efficient node.js inter-process communication library/method?