2011-11-05 17 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中,全局配置=用戶配置),我相信/(null)/(null)/.gitconfig應該是/Users/MyName/.gitconfig確實存在。

我的問題是,我怎樣才能指定當前的用戶環境,同時仍然能夠指定我自己的附加環境屬性?

回答

14

我解決了它。

我從process.env檢索到的當前環境,並用自己的性能擴展它:

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

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

所以這個問題是我錯過了整個環境時,我可以覆蓋它。

相關問題