复杂的child_process不能与Promise蓝鸟一起工作

我不想使用node.js中的child_process执行shell命令https://nodejs.org/api/child_process.html ,我在做一个使用React JS的电子程序。

我想用bluebird来做一个Promise,我的函数可以工作,但是对于像'ls'这样的小命令,但是如果我想在一个文件夹中执行一个简单的hello world程序,我想要这样做: cd localbuild/login/ && java Main 。 这是在我的terminal上工作。 当我试图在我的function做到这一点我有这个错误: promise rejected: Error: spawn cd localbuild/login/ ENOENT closing code: -2

这是我的function:

 _compile(command){ var Promise = require('bluebird'); var exec = require('child_process').execFile; var pathFile = "cd localbuild/login/"; function promiseFromChildProcess(child) { return new Promise(function (resolve, reject) { child.addListener("error", reject); child.addListener("exit", resolve); }); } var child = exec(pathFile+ " && "+command); //var child = exec('ls'); // It works promiseFromChildProcess(child).then(function (result) { console.log('promise complete: ' + result); }, function (err) { console.log('promise rejected: ' + err); }); child.stdout.on('data', function (data) { console.log('stdout: ' + data); }); child.stderr.on('data', function (data) { console.log('stdout: ' + data); }); child.on('close', function (code) { console.log('closing code: ' + code); }); } 

你能帮我吗 ?

您正在导入的child_process库的function是execFile,但您可以使用它来运行一个shell命令,而不是运行一个可执行文件。

只是改变 :

 var exec = require('child_process').execFile; 

至:

 var exec = require('child_process').exec; 

它应该工作!