Javascript 增加nodejs管道的最大字节大小

Javascript 增加nodejs管道的最大字节大小,javascript,node.js,maven,stream,Javascript,Node.js,Maven,Stream,我正在尝试编写一个小的commander脚本来代理我的项目中的其他脚本,并且我正在尝试使用node将标准输出从生成的进程传输到当前进程的标准输出: function runCommand(command, arguments) { var commandProcess = childProcess.spawn(command, arguments); commandProcess.stdout.pipe(process.stdout); commandProcess.on

我正在尝试编写一个小的commander脚本来代理我的项目中的其他脚本,并且我正在尝试使用node将标准输出从生成的进程传输到当前进程的标准输出:

function runCommand(command, arguments) {
    var commandProcess = childProcess.spawn(command, arguments);
    commandProcess.stdout.pipe(process.stdout);
    commandProcess.on("exit", process.exit);
}
在我开始从我的子进程(例如,其中一个是maven命令)获得大的输出之前,这一切都很正常。我看到的是,它只打印出stdout的前8192字节,然后存储其余字节,直到下一个“数据”事件。然后它打印出下一个8192等。这意味着输出中有一个延迟,有时当我们运行服务器进程时,它会停止打印,直到您在服务器上触发另一个“数据”事件


有没有办法增加缓冲区的大小或避免这种行为?理想情况下,此commander脚本仅代理其他脚本,并应按原样打印所有内容。

您使用的是节点进程spawn,它是异步的,因此当子进程给出stdout时,它将作为输出。 参考:[

我建议使用child process exec来运行您的进程,您可以控制输出缓冲区的大小,这将在子进程完成后提供输出。这就是传递缓冲区大小的方式

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

谢谢!我会看看这是否能满足我的需要。起初我没有尝试它的原因是因为打印到
stdout
的数据量。理想情况下,我希望缓冲区大小是“无限”的,并且它只打印输出,我想这就是
。pipe
可以做的。实际上我们不能使用
exec
,因为这样是一个服务器命令(即,一个在你告诉它手动之前不会退出的进程),我们实际上希望它是异步的。在我看来,
派生的
进程有一个8192字节的硬编码限制,我需要一种方法来解决这个问题。