javascript - 使用现有的全局变量在 Node.js 中执行命令行参数?

标签 javascript node.js child-process

我正在命令行中执行一些操作,如下所示:

var exec = require('child_process').exec;
var cmd = 'some command';

exec(cmd, function(error, stdout, stderr) {
  console.log(error);
  console.log(stdout);
  console.log(stderr);
});

它工作正常,但它似乎没有父范围。例如,我有一个在调用函数中可用的 $app 全局变量。

但是在我运行的“某些命令”中它不可用。有什么办法可以传递这个吗?基本上我想在我的子命令行命令中访问 $app

最佳答案

传递参数:

您应该能够执行以下操作:

var options = {
    env : process.env
}

exec(cmd, options, function (error, stdout, stderr) {
    //...
});

这将使您能够访问父级的所有环境变量。

即使未设置环境变量,您也可以在父 Node 程序中即时创建一个,例如:

// in parent program before calling exec.
process.env.userInputtedName = "Joe";

child 现在可以访问该环境变量。

child_process.exec documentation

传递对象:

如果是一个对象,您希望将一个对象从父对象传递给子对象,您可以使用 JSON 函数进行编码和解码,例如

process.env.details = JSON.stringify({
   custom : 'object',
   containing : [ 'complex', 'structures' ] 
});
var options = {
    env : process.env
};

然后在您的子程序中解码 JSON(例如对于 JS):

var importedObject = JSON.parse(process.env.details);

对于更多涉及的进程间通信,您可能需要查看网络库,例如 net 或 zeroMQ。

关于javascript - 使用现有的全局变量在 Node.js 中执行命令行参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32796335/

相关文章:

javascript - 这个点击处理程序如何分配给 DOM 元素?

javascript - 在 JavaScript 中移位时 16 位值变为负数

Node.js 和 Mongoose - 值转换为日期失败(过滤创建的日期)

Node.js 检测子进程退出

javascript - 将 php 变量传递给外部 javascript 文件

javascript - 如何格式化 2015 年 10 月 23 日星期五 12 :00:00 am to particular format datetime string?

javascript - Vue 使用 v-model 选择第一个选项

javascript - 如何通过映射普通id构造html列表

node.js - child_process.spawn 标准输出成 block 出现

c - 操作系统 : wait() in child process