相关疑难解决方法(0)

使用节点child_process的stdout缓冲区问题

我正在尝试使用节点child_process执行curl以从本地网络中的共享文件夹获取JSON文件(大约220Ko).但它实际上返回了一个我无法解决的缓冲问题.这是我的代码:

var exec = require('child_process').exec;

var execute = function(command, callback){
    exec(command, function(error, stdout, stderr){ callback(error, stdout); });
};

execute("curl http://" + ip + "/file.json", function(err, json, outerr) {
    if(err) throw err;
    console.log(json);
})
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

if(err) throw err;
          ^
Error: stdout maxBuffer exceeded.
    at Socket.<anonymous> (child_process.js:678:13)
    at Socket.EventEmitter.emit (events.js:95:17)
    at Socket.<anonymous> (_stream_readable.js:746:14)
    at Socket.EventEmitter.emit (events.js:92:17)
    at emitReadable_ (_stream_readable.js:408:10)
    at emitReadable (_stream_readable.js:404:5)
    at readableAddChunk (_stream_readable.js:165:9)
    at Socket.Readable.push (_stream_readable.js:127:10)
    at Pipe.onread (net.js:526:21)
Run Code Online (Sandbox Code Playgroud)

javascript node.js

83
推荐指数
3
解决办法
6万
查看次数

Node.js的stdout child_process exec被缩短了

在Node.js中,我使用了child_process模块​​的exec命令来调用Java中的算法,该算法将大量文本返回到标准输出,然后我将其解析和使用.我能够捕获它,但是当它超过一定数量的行时,内容就会被截止.

exec("sh target/bin/solver "+fields.dimx+" "+fields.dimy, function(error, stdout, stderr){
    //do stuff with stdout
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试过使用setTimeouts和回调但没有成功,但我确实感觉到这种情况正在发生,因为我在我的代码中引用了stdout,然后才能完全检索它.我已经测试过stdout实际上是数据丢失首先发生的地方.这不是一个异步问题.我也在我的本地机器和Heroku上测试了这个,并且出现了完全相同的问题,每次都截断完全相同的行号.

关于什么可能对此有所帮助的任何想法或建议?

javascript stdout exec child-process node.js

11
推荐指数
3
解决办法
1万
查看次数

标签 统计

javascript ×2

node.js ×2

child-process ×1

exec ×1

stdout ×1