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

2024-04-14

我正在尝试在 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);
});

事情破裂:

命令失败:致命:无法读取配置文件 '(null)/(null)/.gitconfig':没有这样的文件或目录

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

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


我解决了。

我从中检索了当前环境process.env http://nodejs.org/api/process.html#process.env并用我自己的属性扩展它:

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用用户环境在 NodeJS 中执行? 的相关文章