在Node.js中,我使用child_process模块的exec命令来调用
Java中的一个算法,它将大量的文本返回给我,然后解析和使用.我能够捕获它,但是当它超过一定数量的行时,内容是截止的.
exec("sh target/bin/solver "+fields.dimx+" "+fields.dimy,function(error,stdout,stderr){
//do stuff with stdout
}
我已经尝试使用setTimeouts和回调,但没有成功,但我确实觉得这是发生,因为我引用了我的代码中的stdout,才能被完全检索.我已经测试过,stdout是事实上数据丢失的第一次发生.这不是一个进一步的异步问题.我也在本地机器和Heroku上测试过,并且发生完全相同的问题,每次都以完全相同的行号截断.
关于什么可能有助于此的任何想法或建议?
解决方法
编辑:
我在我的电脑(windows)上尝试过dir / s,并且遇到了同样的问题(看起来像一个bug),这段代码解决了我的这个问题:
我在我的电脑(windows)上尝试过dir / s,并且遇到了同样的问题(看起来像一个bug),这段代码解决了我的这个问题:
var exec = require('child_process').exec;
function my_exec(command,callback) {
var proc = exec(command);
var list = [];
proc.stdout.setEncoding('utf8');
proc.stdout.on('data',function (chunk) {
list.push(chunk);
});
proc.stdout.on('end',function () {
callback(list.join());
});
}
my_exec('dir /s',function (stdout) {
console.log(stdout);
})