2017-07-24 1 views
2

Ich habe eine Route, die eine URL-Anfrage innerhalb behandelt Ich führe eine Exec auf einen Bash-Befehl. Aus irgendeinem Grund funktioniert das console.log, also weiß ich, dass der Bash-Befehl endet und der Rückruf eingegeben wird. Die Antwort lässt mich jedoch nichts senden. Wenn ich die Antwort außerhalb des Bereichs des exec-Rückrufs verschiebe, werden Daten von meinem Client gesendet und empfangen. Zur Zeit sendet die Antwort nichts. Ich bekomme auch keinen Fehler.In Node exec Callback-Antwort funktioniert nicht richtig

router.post('/someurl', function (req, res) { 
    exec('some command', function (error, stdout, stderr) { 
     if(error) { 
     console.error('exec error: '+error); 
     } 
     console.log(stdout); 
     res.send(stdout); 
    }); 
}); 
+0

versuchen erscheint 'res.redirect (someURL)' –

+2

Versuchen Sie 'res.send()'. Sie haben 'response.send()'. –

Antwort

0

response ist undefined und Sie versuchen Methode zu nennen, so verwenden res, da es in der Route-Handler als Parameter function(req, res){...}

res.send(stdout); 
+0

Das war ein Fehler meinerseits. Ich habe den Code nicht kopieren, sondern exakt aus meinem Texteditor einfügen. Das Problem ist ein bisschen tiefer als das. – user8359904

+0

@ user8359904 Sie 'exec' on air verwenden, sollte es irgendwie mit child_process-Modul in Verbindung stehen –

+0

Ich dekle exec in der Spitze meiner Datei. var exec = require ('untergeordneter_prozess'). Exec; – user8359904