Node.js:编写一个函数来返回spawn标准输出为一个string

我试图返回这个函数的输出作为一个string,但它保持返回未定义。 我哪里错了?

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')); 

您的函数在command.on语句之后立即返回。 您的close事件callback中的return语句无法返回。 return属于事件callback,而不是run()

console.log调用,而不是return result

一般来说,你应该写下如下的东西:

 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) }); 
 var spawn = require('child_process').spawn, command = spawn('ls', ['/tmp/']); command.stdout.pipe(process.stdout); 

以下链接与您的问题完全相同。