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);
以下链接与您的问题完全相同。