2016-03-21 5 views
0

Я использую cmd для выполнения команд моего шеф-повара, как их запустить с помощью node.js?Как выполнить команду «chef-apply script.rb» в функции node.js?

PS C:\Users\xyz\chef-repo> chef-apply script.rb 

Я хочу, чтобы запустить эту команду с помощью Node.js

exports.testscript=function(req,res){ 
var exec = require('child_process').exec; 
console.log("inside function"); 
var child = exec('chef-apply azurepro.rb' ,{cwd: 'C:\Users\anurag.s\chef-repo'}, 
    function(error, stdout, stderr){ 
    console.log(stdout); 
    console.log(stderr); 
    if (error !== null) { 
     console.log(error); 
    } 
     }); 

//child.stdin.end(); 
}; 

это мой код. Я получаю эту ошибку, и моя команда является файлом .bat.

{ [Error: spawn cmd.exe ENOENT] 
code: 'ENOENT', 
errno: 'ENOENT', 
syscall: 'spawn cmd.exe', 
path: 'cmd.exe', 
cmd: 'cmd.exe /s /c "chef-apply azurepro.rb"' } 
+0

Возможный дубликат выполнения команды [node.js shell command] (http://stackoverflow.com/questions/14458508/node-js-shell-command-execution) – StephenKing

ответ

1

Посмотрите на child_process.exec function. Так что ваш вызов будет выглядеть так:

const exec = require('child_process').exec; 
const child = exec('chef-apply script.rb', 
    (error, stdout, stderr) => { 
    # Your callback here 
}); 
+0

После выполнения сценария нет выхода. В сценарии я использую положения и загружает виртуальную машину в лазурном режиме. Он отлично работает как в powershell, так и в bash, но здесь нет ни ответа, ни сообщения об ошибке. – Anurag

+0

Вам нужно будет распечатать stdout и/или stderr самостоятельно. – coderanger

0
var exec = require('child_process').exec;                            
exports.testscript=function(req,res){ 
//console.log("inside function"); 
var cmd = "chef-apply C:\\Users\\xyz\\chef-repo\\script.rb"; 
var child = exec(cmd + "," + 
    function(error, stdout, stderr){ 
    console.log(child.stdout); 
    console.log(child.stderr); 
    if (error !== null) { 
     console.log(error); 
    } 
     }); 

child.stdin.end(); 

}; 

это мой код. Я не получаю никаких ошибок или результатов. Я думаю, что чего-то не хватает.

+0

Почему вы объединяете параметры 'exec'? Кроме того, я предлагаю удалить ответ и добавить код к вопросу. Это сделает наш разговор более четким. – max

Смежные вопросы