在终端中显示输出后立即检索输出(Javascript/ShellJS)



我遇到了一个问题,在命令运行时,我无法读取shelljs命令(执行java(的输出。我不知道它是否清楚,但基本上我希望这个shelljs命令一出现就输出,而不是在java程序完成后输出。提前感谢您的回答。

process = shell.exec('exec java.......', {async: true}, function(code, stdout, stderr) {
//Here I need the output
console.log('Exit code:', code);
console.log('Program output:', stdout);
console.log('Program stderr:', stderr);
});

您需要使用spawn而不是exec,因为spawn会发出事件,而exec只是等待执行完成。

更多信息:https://nodejs.org/api/all.html#child_process_child_process

const spawn = require('child_process').spawn;
const cmd = spawn('exec java......');
cmd.stdout.on('data', function (data) {
console.log('Program output:', data.toString());
});
cmd.stderr.on('data', function (data) {
console.log('Program stderr:', data.toString());
});
cmd.on('exit', function (code) {
console.log('Exit code:', code.toString());
});

最新更新