增加nodejspipe道的最大字节大小

我试图写一个小指挥脚本代理我的项目中的其他脚本,我试图使用节点来从生成的过程pipe道标准输出到当前进程的标准输出:

function runCommand(command, arguments) { var commandProcess = childProcess.spawn(command, arguments); commandProcess.stdout.pipe(process.stdout); commandProcess.on("exit", process.exit); } 

这工作正常,直到我开始从我的subprocess得到大的输出(例如,其中之一是maven命令)。 我所看到的只是输出stdout的前8192个字节,然后将其余的存储到下一个“数据”事件。 然后打印出下一个8192等等。这意味着输出存在滞后,有时在运行服务器进程的时候,有时会停止打印出来,直到触发服务器上触发另一个“数据”事件的事件。

有没有办法增加这个缓冲区的大小或避免这种行为? 理想情况下,这个指挥官脚本只是代理我们的其他脚本,应该打印出来的东西。

你正在使用节点进程spawn,它是asynchronousasynchronous的,所以当subprocess给stdout的时候它会给出输出。 参考:[ https://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options%5D [1 ]

我build议使用subprocessexec来运行你的进程,在那里你可以控制输出缓冲区的大小,这将在subprocess完成后给出输出。这就是你如何传递缓冲区大小

 var execute = function(command, callback){ exec(command, {maxBuffer: 1024 * 500}, function(error, stdout, stderr){ callback(error, stdout); }); };