繁体   English   中英

如何从我自己的脚本中调用不同的Node.js脚本?

[英]How can I call a different Node.js script from my own?

我正在构建一个使用Node.js将多个CLI应用程序捆绑在一起以供内部使用的应用程序。 我正在使用几个NPM依赖项,其中一些具有自己的CLI命令二进制文件。

为了方便用户使用,我在自己的应用程序中使用Commander的git样式子命令 该模块要求每个用作二进制文件的子命令都有一个单独的.js文件。

这类似于我到目前为止所要完成的工作:

var program = require('commander'),
    spawn   = require('child_process').spawn;

program.parse(process.argv);

var args = ['./node_modules/exampleDep/.bin/index.js'].push(program.args);

var wrap = spawn('node', args);

wrap.stdout.on('data', function (data) {
  process.stdout.write(data);
});

wrap.stderr.on('data', function (data) {
  process.stderr.write(data);
});

因此,基本上,我正在尝试将另一个二进制文件包装在我自己的文件中。 此方法有效,但是感觉有点Node.exe ,它打开了2个Node.exe实例。

您可以使用child_process.forkhttps : child_process.fork

这是child_process.spawn()功能的特例,用于生成Node.js进程。 除了在正常的ChildProcess实例中包含所有方法之外,返回的对象还内置了一个通信通道。 有关详细信息,请参见[child.send(message,[sendHandle])] []。

或者,如果您不想产生新的NodeJS进程,则可以使用vm模块: https : //nodejs.org/api/vm.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM