node js spawn cut result

时间:2016-09-29 12:40:45

标签: javascript node.js spawn

我在node js中有这个代码执行java program并阅读stdout

let javaRun = spawn('java', execParam);
javaRun.stdout.on('data', function (data) {
    console.log(data.toString());               
});

在大多数情况下它运行良好,但在某些情况下,返回的字符串非常大(在utf8中为22700个字符),当它很大时,console.log只打印前8020个字符并剪切其余字符。

是否有一种方法可以为字符串或至少非常大的字符串提供无限长度的返回值?

谢谢

2 个答案:

答案 0 :(得分:0)

const CONSOLELOGLIMIT = 8020;
let s = 0, f = CONSOLELOGLIMIT, part = ' ';
strData = data.toString();
while(part.length > 0) {
    part = strData.substr(s, f);
    console.log(part);
    s = s + CONSOLELOGLIMIT;
    f = f + CONSOLELOGLIMIT;
}

答案 1 :(得分:0)

我看到.on('数据')被称为带有数据块的倍数时间。

所以我修改java以在每次sysout事件时添加一个EOL标记,并在读取stdout时查找它。