一旦 Node.js 脚本为 运行,是否有可能获得更新的环境变量?

Is it possible to get an UPDATED environment variable once a Node.js script is running?

节点脚本已经 运行 后,如何检索 updated 环境变量?

考虑以下 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 用户很特别,我以前也很惊讶。这可能吗?

是的,这是可能的。实际上有很多选择。您可以使用 'inter process communication (IPC)'...

在多个脚本之间传递变量

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

另一种选择是通过内置的进程信号来完成: https://nodejs.org/api/process.html#process_signal_events

还有许多其他 options/library,各有优缺点。对于可伸缩性,当您通过套接字进行通信时,您可能是最好的,如果性能非常重要,您可以选择使用共享内存的选项。

本题讨论了多个选项; What's the most efficient node.js inter-process communication library/method?