如何在节点中输出带有exec的实时console.log

时间:2015-09-26 17:50:26

标签: node.js exec

有没有办法从节点应用程序中运行命令行命令并使输出生效?

例如:

var exec = require('child_process').exec;
var fs = require('fs');

exec( 'nightwatch --config nightwatch_dev.json  ', function( error, stdout, stderr ){
    console.log( stdout );
});

或:

var exec = require('child_process').exec;
var fs = require('fs');

exec( 'rsync -avz /some/folder/ john@8.8.8.8:/some/folder/', function( error, stdout, stderr ){
    console.log( stdout );
});

有许多实例可以很好地在节点中编写脚本,但输出只在命令完成后才转储到终端。

干杯 Ĵ

1 个答案:

答案 0 :(得分:1)

如果您希望获得结果,则应使用spawn()代替exec()exec()缓冲输出,然后在进程完成后立即将其全部提供给您。 spawn()返回一个事件发射器,并在发生时获得输出。

.spawn()的示例here in the node.js doc