Tow*_*wer 11 javascript node.js
我正在尝试在Node中执行命令:
cd "/www/foo/" && "/path/to/git/bin/git.exe" config --list --global
Run Code Online (Sandbox Code Playgroud)
基本上,我想执行一个返回全局配置的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);
});
Run Code Online (Sandbox Code Playgroud)
但是,只要我为配置指定环境:
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);
});
Run Code Online (Sandbox Code Playgroud)
事情破裂:
命令失败:致命:无法读取配置文件'(null)/(null)/ .gitconfig':没有这样的文件或目录
我知道原因,这是因为执行的Git程序不再在用户环境下执行(就像在cli中一样),并且无法检索用户目录以读取全局配置(在Git中,全局配置=用户配置)我相信/(null)/(null)/.gitconfig应该存在/Users/MyName/.gitconfig哪些.
我的问题是,如何指定当前的用户环境,同时仍然能够指定我自己的附加环境属性?
Tow*_*wer 14
我解决了
我从process.env我自己的属性中检索当前环境并对其进行扩展:
var environment = process.env;
environment.customProp = 'foo';
var config = {
maxBuffer: 10000 * 1024,
env: environment
};
Run Code Online (Sandbox Code Playgroud)
所以问题是当我覆盖它时我错过了整个环境.
| 归档时间: |
|
| 查看次数: |
4715 次 |
| 最近记录: |