首页 > 解决方案 > 在终端显示后立即检索输出(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);
});

标签: javascript

解决方案


您需要使用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());
});

推荐阅读