2011-11-05 8 views
11

は私がノードでコマンドを実行しようとしています:ユーザーの環境を使ってNodeJSで実行するには?

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

は基本的に、私は(現在のユーザーのために)グローバルコンフィギュレーションを返すGitのコマンドを実行します。

これは、私がcliで直接コマンドを実行するとうまく動作します。

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); 
}); 

をしかし、私は設定の環境を指定するとすぐに、::私はノードでこのようにそれを行う場合にも動作します

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); 
}); 

物事は休憩:

コマンドが失敗しました:致命的:設定ファイルを読み取ることができません '(null)/(null)/。gitconfig':このようなファイルやディレクトリなし

私はその理由を知っています、それは実行されたGitプログラムが(cliのような)ユーザ環境下ではもはや実行されず、グローバル設定を読み込むためにユーザディレクトリを取得できません(Git、global config = user config)と私は/(null)/(null)/.gitconfigが存在するはずです/Users/MyName/.gitconfigと考えています。

私の質問は、私自身の追加の環境プロパティをまだ指定できるうちに、現在のユーザー環境をどのように指定できますか?

答えて

14

私はそれを解決しました。

私はprocess.envから現在の環境を取得し、私自身の性質とそれを拡張:

var environment = process.env; 
environment.customProp = 'foo'; 

var config = { 
    maxBuffer: 10000 * 1024, 
    env: environment 
}; 

私はそれを上書きするときだから、問題は、私は、環境全体を逃しました。

関連する問題