Node.js: Writing a function to return spawn stdout as a string

node.js

Solution

Your function returns immediately after `command.on` statement. The `return` statement in your callback for the `close` event is returned to nowhere. The `return` belongs to event callback, not to `run()`.

Put `console.log` call instead of `return result`.

Generally speaking you should write something like:

function run(cmd, callback) {
    var spawn = require('child_process').spawn;
    var command = spawn(cmd);
    var result = '';
    command.stdout.on('data', function(data) {
         result += data.toString();
    });
    command.on('close', function(code) {
        return callback(result);
    });
}

run("ls", function(result) { console.log(result) });

Problem

I'm trying to return the output of this function as a string, but it keeps returning as undefined. Where am I going wrong? ``` function run(cmd){ var spawn = require('child_process').spawn; var command = spawn(cmd); var result = ''; command.stdout.on('data', function(data) { result += data.toString(); }); command.on('close', function(code) { return result; }); } console.log(run('ls')); ```

Original source

Related problems