我怎样才能调用与自己不同的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
的两个实例。
您可以使用child_process.fork
:https://nodejs.org/api/child_process.html#child_process_child_process_fork_modulepath_args_options
这是用于生成Node.js进程的child_process.spawn()功能的一个特殊情况。除了在一个普通的ChildProcess实例中拥有所有方法之外,返回的对象还内置了一个通信通道。有关详细信息,请参阅[child.send(message,[sendHandle])][]。
或者,如果您不想生成新的NodeJS进程,可以使用vm
模块:https://nodejs.org/api/vm.html
相关文章:
- Node.js v6.2.0类扩展不是函数错误
- 如何使用 node.js 比较两个 json 数组
- Node.js's Buffer.writeFloatBE in Javascript
- node.js:setInterval()正在跳过调用
- 如何处理node.js节点mongodb中的连接和查询队列
- Node.js正在更改应用程序以使用集群模块
- 如何使用Node.js最有效地解析网页
- 在openshift node js应用程序中获取请求
- 正在删除node.js中已验证的网站
- 与运行长作业(javascript,node.js)的第三方API同步的最佳实践
- 在索引.html和应用.js [node.js] 之间共享变量
- Node.js中的JavaScript原型对象效率
- node.js请求数据事件未在CORS ajax调用中触发
- 使用node.js制作网站
- 使用node.js服务器中的evernote api获取note内容
- 有没有任何方法可以使用node-js从不同的机器打开浏览器
- 使用CI和CodeDeploy对node.js应用程序进行连续部署
- 在Node.js中上传和检索图像
- 什么's本地node.js服务器和python简单http服务器之间的区别
- 如何使用 Node JS 获取 JSON 嵌套数组值