我有这个简单的脚本:
var exec = require('child_process').exec; exec('coffee -cw my_file.coffee', function(error, stdout, stderr) { console.log(stdout); });
我只需执行一个命令来编译一个咖啡脚本文件。但是 stdout 永远不会显示在控制台中,因为命令永远不会结束(因为咖啡的 -w 选项)。如果我直接从控制台执行命令,我会收到如下消息:
18:05:59 - compiled my_file.coffee
我的问题是:是否可以使用 node.js exec 显示这些消息?如果是怎么办?!
谢谢
不要使用exec. 使用spawnwhich 是一个EventEmmiter对象。stdout然后,您可以在/ stderrevents( spawn.stdout.on('data',callback..)) 发生 时收听它们。
exec
spawn
EventEmmiter
stdout
stderr
spawn.stdout.on('data',callback..)
从 NodeJS 文档:
var spawn = require('child_process').spawn, ls = spawn('ls', ['-lh', '/usr']); ls.stdout.on('data', function (data) { console.log('stdout: ' + data.toString()); }); ls.stderr.on('data', function (data) { console.log('stderr: ' + data.toString()); }); ls.on('exit', function (code) { console.log('child process exited with code ' + code.toString()); });
exec缓冲输出并通常在命令执行完成时返回它。