2016-03-21 6 views
0

Ich benutze cmd, um meine Chefbefehle auszuführen, Wie starte ich sie mit node.js?Wie führe ich den Befehl "chef-apply script.rb" in der Funktion node.js aus?

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

Ich möchte diesen Befehl auszuführen mit 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(); 
}; 

dies mein Code. Ich erhalte diesen Fehler und mein Befehl ist .bat-Datei.

{ [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

Mögliches Duplikat von [node.js Shell-Befehlsausführung] (http://stackoverflow.com/questions/14458508/node-js-shell-command-execution) – StephenKing

Antwort

1

Werfen Sie einen Blick auf child_process.exec function. So würde Ihr Aufruf wie folgt sein:

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

Es gibt keine Ausgabe nach der Ausführung des Skripts. Das Skript Ich verwende Bestimmungen und bootstraps eine VM in azurblau. Es läuft sowohl in Powershell als auch in Bash, aber hier gibt es weder eine Antwort noch irgendeine Fehlermeldung. – Anurag

+0

Sie müssten den stdout und/oder stderr selbst ausdrucken. – 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(); 

}; 

dies mein Code. Ich bekomme keinen Fehler oder Ausgabe. Ich denke, ich vermisse etwas.

+0

Warum verketten Sie 'exec' Parameter? Außerdem empfehle ich, die Antwort zu entfernen und den Code zur Frage hinzuzufügen. Es würde unsere Konversation klarer werden lassen. – max

Verwandte Themen