16
我想在通过child_process.exec
运行程序时设置环境变量。这可能吗?NodeJS为exec设置的环境变量
我尝试设置env
这样的:
exec('FOO', {'FOO': 'ah'}, function(error, stdout, stderr) {console.log(stdout, stderr, error);});
但由此产生的消息说FOO并不存在。
我想在通过child_process.exec
运行程序时设置环境变量。这可能吗?NodeJS为exec设置的环境变量
我尝试设置env
这样的:
exec('FOO', {'FOO': 'ah'}, function(error, stdout, stderr) {console.log(stdout, stderr, error);});
但由此产生的消息说FOO并不存在。
您必须传递一个选项对象,其中包含键值env,其值本身就是键值对的对象。
exec('echo $FOO', {env: {'FOO': 'ah'}}, function (error, stdout, stderr)
{
console.log(stdout, stderr, error);
});
任何使用此方法的人都应该注意,通过这种方式指定环境变量将替换环境变量的_entire_集,包括任何可能存在的'PATH'。所以,如果你尝试设置一个env变量,并且你突然得到关于你试图执行不被发现的命令的错误,这就是为什么。这从文档中根本看不出来,让我挠了一下脑袋。如果你想添加env变量并保持平台不可知,你可以创建一个'process.env'副本,将你的修改应用到那个,并将它传递给'child_process.exec'。 – DanielSmedegaardBuus
您也可以更新'process.env' direclty。例如:'process.env [“PATH”] + = path.delimiter + process.cwd()+ path.sep +“node_modules”+ path.sep +“.bin” – mems