如何在NodeJS中使用用户的环境执行
How to exec in NodeJS using the user's environment?
我正在尝试在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);
});
Things break:
Command failed: fatal:无法读取配置文件"(null)/(null)/。gitconfig':没有这样的文件或目录
我知道原因,因为执行的Git程序不再在用户环境下执行(就像在cli中一样),无法检索用户目录来读取全局配置(在Git中,global config = user config),我认为/(null)/(null)/.gitconfig
应该是确实存在的/Users/MyName/.gitconfig
。
我的问题是,我如何在指定当前用户环境的同时仍然能够指定我自己的附加环境属性?
我解决了。
我从process.env
中检索了当前环境,并用我自己的属性扩展了它:
var environment = process.env;
environment.customProp = 'foo';
var config = {
maxBuffer: 10000 * 1024,
env: environment
};
所以问题是当我覆盖它时,我错过了整个环境
相关文章:
- 从远程脚本获取用户IP
- 如何通过自己获得Chrome扩展的用户反馈/错误报告
- d3基于用户选择动态更新节点
- 同步调用,直到用户通过angular验证为访问者
- 使用javascript搜索具有用户输入的数组
- 难以访问的JS环境中的语法错误
- 如何使用jquery确定用户是否年满18岁
- Meteor-添加用户自定义字段的方法不起作用
- React Native通过Navigator将用户输入数据传递到选项卡栏IOS中的组件
- 跟踪用户点击Adsense广告的IP地址
- 使用javascript反复检查用户在facebook上的登录状态
- 我想在AngularJS应用程序中创建一个输入数字框,用户不应该在该框上键入十进制数字.(一个整数输入框)
- 如何检查用户在html5视频播放器中观看了完整的视频
- 一个密码测试程序,如果存在空格,它会提醒用户
- 如何在节点的沙盒环境中执行用户提交的javascript代码
- NodeJS如何在多用户环境中处理基元和对象
- 如何在NodeJS中使用用户的环境执行
- 防止用户在多租户环境中多次投票的最佳方法
- 基于用户选择的环境的选择性ejs模板
- 需要安全的方式在web环境的服务器上解释和执行用户定义的逻辑