Я видел один и тот же вопрос один раз, но я не могу для жизни меня понять, почему это не работает. У меня есть довольно простая программа ниже, которая должна обернуть функцию exec и вернуть результат. Однако все возвращаемые значения не определены. Вот функция:Node.js execSync возвращает undefined, но console.log работает
var exec = require('child_process').execSync;
quickexec = function(command) {
exec(command, function(error, stdout, stderr) {
if(error) {
return error;
} else {
return stdout;
}
});
};
Я называю это, как этот console.log(quickexec('echo -n $USER'));
и я получаю неопределенную каждый раз. Однако, если я изменю возврат в моей функции на console.log, это сработает. Я думал, что это была проблема асинхронной работы, поэтому я начал использовать execSync
, но ничего не изменил.
* «Я думал, что это была проблема асинхронности» *. Почему, по-вашему, вы должны пройти обратный вызов в первую очередь? Кроме того, 'quickexec' не содержит оператора' return'. Какое решение вы ищете? Технически это дубликат [Как вернуть ответ от асинхронного вызова?] (Http://stackoverflow.com/q/14220321/218196) –