我正在尝试使用节点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) 在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上测试了这个,并且出现了完全相同的问题,每次都截断完全相同的行号.
关于什么可能对此有所帮助的任何想法或建议?