2011-10-19 29 views
16

child_process.exec経由でプログラムを実行しているときに環境変数を設定したい。これは可能ですか?execのNodeJS環境変数を設定

私はこのようなenvを設定してみました:

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

が、結果のメッセージがFOOが存在していないと述べました。

答えて

37

のenvを含むオプションオブジェクトを渡す必要があります。その値は、それ自体がキー値のペアのオブジェクトです。

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

これを使って誰もがこのように環境変数を指定すると、それ以外の場合は存在している場合があります*任意の 'PATH'を含む環境変数、*の_entire_セットを置き換えることにご注意ください。したがって、env変数を設定しようとしたときに、execで見つからないコマンドに関するエラーが突然表示された場合、これが理由です。これはドキュメントからはっきりと分かりませんが、私の頭を少し傷つけてしまいました。 env変数を追加してプラットフォームに依存しないままにしたい場合は、 'process.env'のコピーを作成し、それに変更を適用して' child_process.exec'に渡すことができます。 – DanielSmedegaardBuus

+1

'process.env' direcltyも更新することができます。例: 'process.env [" PATH "] + = path.delimiter + process.cwd()+ path.sep +" node_modules "+ path.sep +" .bin "' – mems

関連する問題