jin*_*ula 11 command-line-interface child-process node.js
我正在编写一个Yeoman生成器并使用child_process.spawn()(通过yeoman的spawnCommand() - 请参阅https://github.com/yeoman/generator/blob/master/lib/actions/spawn_command.js)
我的代码看起来像这样:
var list = this.spawnCommand('npm', ['list', 'sails'], {stdio: 'pipe'});
list.stdout.on('data', /* callback here that wants to consume the command's output */);
Run Code Online (Sandbox Code Playgroud)
我可以看到list.stdio
存在,它有[0,1,2]
关键.它们中的每一个都是null(或未定义).也就是说,记录_.keys(list).join()
输出,,
. list.stdout.on()
给我一个例外,说明stdout
是null.
我需要做的是检查是否安装了特定的软件包,并查看版本号是什么.但我后来还需要做其他解析CLI命令输出的东西(例如,git log输出),所以我需要一个通用的解决方案. .spawn()
看起来像我想要的,但我见过的例子似乎表明stdout应该是一个有.on()
方法的东西.例如,这里给出的那个:http://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options它显示正在运行ls -lh /usr
.
我错过了一些简单的事吗?我想知道我运行的命令是否完全没有输出,如果这意味着stdout将为null.如果是这种情况,那么我只需要识别可能没有输出的命令,并在尝试使用它之前检查以确保stdout不为null.
实际编辑,npm list命令的输出显示在命令行上,但在我用于诊断问题的日志语句之后(我在.spawnCommand()
调用之后和调用之前放了.on()
.但我需要在我的访问中访问它代码 - 让它出现在命令行旁边就在这一点上(除了它让我知道进程成功运行了CLI命令).
归档时间: |
|
查看次数: |
4268 次 |
最近记录: |