我正在尝试将我的phantomjs脚本的结果缓冲到nodejs,但由于某种原因,缓冲区结果不断出现在STDERR而不是STDOUT,即使似乎没有错误。
NodeJS代码:
var exec = require('child_process').exec;
exec('phantomjs console.js', function(stdout, stderr, error){
if (error !== null) {
console.log('exec error: ' + error);
}
console.log("Standard Output: " + stdout + " ");
console.log("Error Output: " + stderr + " ");
});
PhantomJS代码(console.js):
console.log("Hello world!");
phantom.exit();
我得到的结果:
exec error:
Standard Output: null
Error Output: Hello world!
答案 0 :(得分:1)
根据Dan Davis,您有error
,stderr
和stdout
已切换 - 而不是console.log
语句,但是参数的顺序是功能。以下是the docs
var exec = require('child_process').exec;
exec('phantomjs console.js', function(error, stdout, stderr){
if (error !== null) {
console.log('exec error: ' + error);
}
console.log("Standard Output: " + stdout + " ");
console.log("Error Output: " + stderr + " ");
});
您输出的原因是您的stdout
应该是实际的error
所在的位置,因此它是空的。您的stderr
位于实际stdout
的位置,因此收到了输出。您的error
位于实际stderr
的位置,因此它是空的。