为什么使用child_process时输出来自STDERR而不是STDOUT ?执行为Node.js
Why does output come out from STDERR and not STDOUT when using child_process.exec for Node.js?
我正试图缓冲从我的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!
根据Dan Davis,您切换了error
, stderr
和stdout
-不是console.log
语句,而是函数中参数的顺序。以下是按照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
的位置,所以它是空的。
相关文章:
- 无法在通过jQuery的ajax加载的页面中执行javascript
- JavaScript执行暂时挂起页面
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 当js函数's已执行
- 哪个先执行
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- HTML表单提交时未执行外部函数
- 在Safari执行javascript之前对其进行修改
- Amd,希望确保某个东西总是最后执行
- 在Windows 10中自动执行例行程序(主要与浏览器交互)
- 递归使用 eval() 是检查程序执行的好方法吗?
- 如何做到这一点,使代码在不传递条件后执行函数
- 如何在执行此特定onclick事件时执行JavaScript函数
- 如何在从浏览缓存加载页面时执行javascript
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- Jquery:代码在rails中的页面加载时未执行
- 如何防止jQueryonclick事件中的Ruby方法在页面刷新时执行
- JavaScript动画从不执行
- 为什么onsubmit函数似乎没有执行
- 当执行child_process中的shell时,child_proccess中的stdout不能在stdin之前输出右