【问题标题】:Is it possible to get an UPDATED environment variable once a Node.js script is running?运行 Node.js 脚本后是否可以获得 UPDATED 环境变量?
【发布时间】:2016-03-28 07:28:39
【问题描述】:

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

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

照原样,在别处设置的环境变量被忽略,函数始终输出“未定义”。

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 用户很特别,我之前一直很惊讶。这甚至可能吗?

【问题讨论】:

    标签: node.js gulp environment-variables


    【解决方案1】:

    是的,这是可能的。实际上有很多选择。您可以使用“进程间通信 (IPC)”在多个脚本之间传递变量...

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

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

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

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

    【讨论】:

    • 由于某种原因,我没有考虑 IPC,因此我一直致力于通过 env 变量创建一个简单的标志轮询机制。我最终使用了 zmq (zeromq),这在 node.js 中就像我想象的那样简单。谢谢!
    猜你喜欢
    • 2021-11-16
    • 1970-01-01
    • 2010-10-09
    • 2022-07-06
    • 2018-07-11
    • 2019-07-28
    • 1970-01-01
    • 1970-01-01
    • 2017-06-26
    相关资源
    最近更新 更多