将数据导入节点脚本 - 比命令行参数更复杂

时间:2013-09-26 21:34:02

标签: node.js command-line-arguments stdout

我将我的任务分成多个节点脚本,“节点程序”将使用其他Node应用程序中的Node的子进程node program1.js函数与node program2.jsexec等单独运行

这样事情就分崩离析了,我可以在多个其他应用中重复使用一个程序。

很容易从这样的节点程序中获取数据,你只需抛出你想要的任何数据stdout并让exec在另一端捕获它。

将数据放入节点程序中,如何?如果数据只是简单的命令行参数,这很容易,但是我如何将任意数据(二进制,JSON,等等)放入其中(在我称之为exec的位置或其附近)?也许有些管道?示例代码我很感激。

1 个答案:

答案 0 :(得分:1)

使用env属性将环境变量传递给生成的子进程。您可以在exec()中执行此操作,但是为了生成Node进程,最好使用fork(),因为它会创建一个新的V8实例,这就是您正在做的事情。

这是你传递环境变量的方式:

var exec = require('exec');
var child = exec(command, {
  env: {
    buffer: new Buffer(8),
    json: JSON.stringify(json),
    string: 'a simple string'
  }
}, function(error, stdout, stderr) {
  // execution callback
});

这就是你在子进程中使用变量的方法:

process.env.buffer
process.env.json
process.env.string