gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 23:16:10 24 4
gpt4 key购买 nike

我正在尝试在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com