2011-11-05 23 views
11

Próbuję wykonać polecenia w węźle:Jak wykonać polecenie w NodeJS przy użyciu środowiska użytkownika?

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

Zasadniczo chcę, aby wykonać polecenie Git, która zwraca globalną konfigurację (dla bieżącego użytkownika).

Działa to dobrze dla mnie, gdy wykonuję polecenie bezpośrednio na cli. Działa również jeśli robię to w ten sposób w węźle:

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

jednak jak najszybciej określić środowisko do config:

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

miejsca przerwa:

Polecenie nie powiodło się : fatal: nie można odczytać pliku konfiguracyjnego '(null)/(null) /. gitconfig': Brak takiego pliku lub katalogu

Znam przyczynę, ponieważ wykonywany program Git nie jest już uruchamiany w środowisku użytkownika (tak jak jest w cli) i nie może pobrać katalogu użytkownika do odczytu konfiguracji globalnej (w Git, global config = user config) i uważam, że /(null)/(null)/.gitconfig powinien być /Users/MyName/.gitconfig, który istnieje.

Moje pytanie brzmi: jak mogę określić bieżące środowisko użytkownika, nadal będąc w stanie określić własne dodatkowe właściwości środowiska?

Odpowiedz

14

Rozwiązałem to.

I pobierane bieżące środowisko z process.env i rozszerzyła je na własne właściwości:

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

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

więc problem został brakowało mi całe środowisko kiedy nadpisałeś go.

Powiązane problemy