javascript - 如何使用用户环境在 NodeJS 中执行?

标签 javascript node.js

我正在尝试在 Node 中执行命令:

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

基本上,我想执行一个返回全局配置(针对当前用户)的 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);
});

但是,一旦我为配置指定了环境:

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

事情破裂了:

Command failed: fatal: unable to read config file '(null)/(null)/.gitconfig': No such file or directory

我知道原因,是因为执行的Git程序不再在用户环境下执行(就像在cli中一样),无法检索用户目录读取全局配置(在Git中,global config =用户配置),我相信 /(null)/(null)/.gitconfig 应该是确实存在的 /Users/MyName/.gitconfig

我的问题是,如何在指定当前用户环境的同时还能指定我自己的其他环境属性?

最佳答案

我解决了。

我从 process.env 检索到当前环境并用我自己的属性扩展它:

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

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

所以问题是当我覆盖它时我错过了整个环境。

关于javascript - 如何使用用户环境在 NodeJS 中执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8020914/

相关文章:

javascript - jQuery 获取数据属性不起作用

javascript - 使用jquery隐藏li内的div

javascript - 在 Mozilla 中停止无限循环的警报

javascript - mongoose.findOneAndUpdate 返回 null

javascript - 添加 Java Script 库作为 npm 依赖项或简单地将它们包含在 HTML 中有什么区别?

javascript - 从控制台获取输入

javascript - Jquery 切换和添加/删除

node.js - 如何在 express js 中手动触发路由处理程序?

javascript - 防止 Jasmine 中的 onComplete 退出

php - 两个域,一个站点,一个 SSL 结帐。如何获得 cookies ?