【发布时间】: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
我想在通过child_process.exec 运行程序时设置一个环境变量。这可能吗?
我尝试像这样设置env:
exec('FOO', {'FOO': 'ah'}, function(error, stdout, stderr) {console.log(stdout, stderr, error);});
但结果消息说 FOO 不存在。
【问题讨论】:
标签: node.js
根据@DanielSmedegaardBuus 的回答,如果您想保留现有的环境变量,则必须添加您的环境变量:
exec(
"echo $FOO",
{ env: { ...process.env, FOO: "ah" } },
function (error, stdout, stderr) {
console.log(stdout, stderr, error);
}
);
【讨论】:
您必须传递一个选项对象,其中包含键 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"