小编典典

执行:显示标准输出“live”

all

我有这个简单的脚本:

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 显示这些消息?如果是怎么办?!

谢谢


阅读 80

收藏
2022-06-01

共1个答案

小编典典

不要使用exec.
使用spawnwhich
是一个EventEmmiter对象。stdout然后,您可以在/ stderrevents(
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缓冲输出并通常在命令执行完成时返回它。

2022-06-01