2012-01-25 3 views
0

Я бегу код в 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?

ответ

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(), еще не запущен.

0

цистерны для ответа я нашел проблему, Его истинное, что мне нужно, чтобы иметь в рассмотрение поток ошибок, но код является лишь небольшой демо я решить эту проблему, объявляя переменную а как массив вар а = []

var a= [] 

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

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

}) 

Теперь переменная а содержит строку из стандартного вывода для будущего использования

Рассмотрима этого пост решаемых

с уважением

+0

Вы можете отметить свой собственный пост как ответ, это прекрасно. –

Смежные вопросы