我有这个简单的脚本:
var exec = require('child_process').exec; exec('coffee -cw my_file.coffee', function(error, stdout, stderr) { console.log(stdout); });
在这里,我只需执行一个命令即可编译咖啡脚本文件。但是stdout永远不会显示在控制台中,因为该命令永远不会结束(因为coffee的- w选项)。如果我直接从控制台执行命令,则会收到如下消息:
18:05:59 - compiled my_file.coffee
我的问题是:是否可以使用node.js exec显示这些消息?如果是,怎么办?!
谢谢
不要使用exec。使用spawn哪个是EventEmmiter对象。然后,您可以在事件 发生时 收听stdout/ stderrevent(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 缓冲输出,通常在命令完成执行后将其返回。