如何使用用户环境在NodeJS中执行?

我正在尝试在Node中执行一个命令:

cd "/www/foo/" && "/path/to/git/bin/git.exe" config --list --global 

基本上,我想执行一个返回全局configuration(对于当前用户)的Git命令。

当我直接在cli上执行命令时,这对我很好。 如果我在Node中这样做,它也可以工作:

 var exec = require('child_process').exec; var config = { maxBuffer: 10000 * 1024 }; exec('cd "/www/foo/" && "/path/to/git/bin/git.exe" config --list --global', config, function() { console.log(arguments); }); 

但是,只要我指定了configuration的环境:

 var exec = require('child_process').exec; var config = { maxBuffer: 10000 * 1024, env: { // <--- this one } }; exec('cd "/www/foo/" && "/path/to/git/bin/git.exe" config --list --global', config, function() { console.log(arguments); }); 

事情破裂:

命令失败:致命:无法读取configuration文件'(空)/(null)/。gitconfig':没有这样的文件或目录

我知道原因,这是因为执行的Git程序不再在用户环境下执行(比如在cli中),而且不能检索用户目录来读取全局configuration(在Git中,global config = user config)我相信/(null)/(null)/.gitconfig应该是/Users/MyName/.gitconfig确实存在。

我的问题是,我怎样才能指定当前的用户环境,同时仍然能够指定我自己的附加环境属性?

我解决了它。

我从process.env检索了当前的环境,并使用自己的属性对其进行了扩展:

 var environment = process.env; environment.customProp = 'foo'; var config = { maxBuffer: 10000 * 1024, env: environment }; 

所以问题是我覆盖了整个环境。