【问题标题】:NodeJS set environment variable for execNodeJS为exec设置环境变量
【发布时间】:2011-12-11 02:33:52
【问题描述】:

我想在通过child_process.exec 运行程序时设置一个环境变量。这可能吗?

我尝试像这样设置env

exec('FOO', {'FOO': 'ah'}, function(error, stdout, stderr) {console.log(stdout, stderr, error);});

但结果消息说 FOO 不存在。

【问题讨论】:

    标签: node.js


    【解决方案1】:

    根据@DanielSmedegaardBuus 的回答,如果您想保留现有的环境变量,则必须添加您的环境变量:

    exec(
      "echo $FOO", 
      { env: { ...process.env, FOO: "ah" } }, 
      function (error, stdout, stderr) {
        console.log(stdout, stderr, error);
      }
    );
    

    【讨论】:

      【解决方案2】:

      您必须传递一个选项对象,其中包含键 env,其值本身就是键值对的对象。

      exec('echo $FOO', {env: {'FOO': 'ah'}}, function (error, stdout, stderr) 
      {
          console.log(stdout, stderr, error);
      });
      

      【讨论】:

      • 任何使用它的人都应该注意,以这种方式指定环境变量会替换整个组环境变量,包括任何PATH,否则可能会存在。因此,如果您尝试设置 env 变量并且突然收到有关您尝试执行的命令未找到的错误,这就是原因。这一点从文档中根本不清楚,让我有点摸不着头脑。如果您想添加环境变量并保持与平台无关,您可以复制process.env,应用您的更改,然后将其传递给child_process.exec
      • 您也可以直接更新process.env。例如:process.env["PATH"] += path.delimiter + process.cwd() + path.sep + "node_modules" + path.sep + ".bin"
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-15
      • 1970-01-01
      • 2019-12-14
      • 2022-01-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多