变量没有任何东西

时间:2012-01-25 00:16:14

标签: node.js

我在nodejs中运行一个代码,从变量执行console.log没有问题,但变量a不包含任何内容:

var a='';
var util   = require('util'),
    exec  = require('child_process').exec,
    child;

child = exec('ifconfig eth0',
    function (error, stdout, stderr) {
         a=stdout.toString();
         console.log(a);
})

是否有任何错误导致它未将stdout消息存储到变量a

2 个答案:

答案 0 :(得分:1)

如果执行ifconfig eth0时出错,则stdout中没有值。例如,我的机器实际上没有名为eth0的接口,因此stdout中没有返回任何内容。

尝试手动执行ifconfig eth0以查看会发生什么。您也可以像这样修改代码:

var a='',b='';
var util   = require('util'),
    exec  = require('child_process').exec,
    child;

child = exec('ifconfig eth0',
    function (error, stdout, stderr) {
         a=stdout.toString();
         b=stderr.toString();
         console.log(a);
         console.log(b);
})

或者,也许您的意思是console.log确实将输出记录到控制台,但变量a似乎是空的?

如果是这种情况,请确保您在合适的时间访问a。只是在您发布的代码的最后一行之后尝试阅读a将无效,因为设置a=stdout.toString()的回调还没有运行。

答案 1 :(得分:0)

坦克回复我发现了问题, 确实,我需要考虑stderr,但代码只是一个小的演示 我解决了将变量a声明为数组var a = []

的问题
var a= []

var util   = require('util'),
    exec  = require('child_process').exec,
    child;

child = exec('ifconfig eth0',
    function (error, stdout, stderr) {
         a[0]=stdout.toString();

})

现在变量a包含来自stdout的字符串以供将来使用

考虑这篇文章已解决

此致