2015-12-30 2 views
5

Ich möchte nur eine externe exe von einer Nodejs-App aufrufen. Diese externe exe führt einige Berechnungen durch und gibt eine Ausgabe zurück, die die nodejs-App benötigt. Aber ich habe keine Ahnung, wie man die Verbindung zwischen nodejs und einer externen exe herstellt. Also meine Fragen:node.js externe exe aufrufen und auf Ausgabe warten

  1. Wie rufe ich eine externe exe-Datei mit bestimmten Argumenten aus nodejs richtig auf?
  2. Und wie muss ich die Ausgabe der exe zu nodejs effizient übertragen?

Nodejs soll auf die Ausgabe der externen exe warten. Aber wie wissen Nodejs, wenn die Exe ihre Verarbeitung beendet hat? Und wie muss ich dann das Ergebnis der exe liefern? Ich möchte keine temporäre Textdatei erstellen, in die ich die Ausgabe schreibe, und nodejs liest einfach diese Textdatei. Gibt es eine Möglichkeit, die Ausgabe der exe direkt an nodejs zurückzugeben? Ich weiß nicht, wie eine externe exe ihre Ausgabe direkt an nodejs liefern kann. BTW: Die exe ist mein eigenes Programm. So habe ich vollen Zugriff auf diese App und kann alle notwendigen Änderungen vornehmen. Jede Hilfe ist willkommen ...

+0

lesen Sie in diesem Beispiel mit dem Kind Prozessmodul: https://gist.github.com/Sidnicious/1215700 – Quy

Antwort

8
  1. Mit child_process Modul.
  2. Mit stdout.

-Code wird wie dieser

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

var result = ''; 

var child = exec('ping google.com'); 

child.stdout.on('data', function(data) { 
    result += data; 
}); 

child.on('close', function() { 
    console.log('done'); 
    console.log(result); 
}); 
+0

danke, einfaches Beispiel könnte ich als Grundlage für mein Projekt verwenden. Und es funktioniert! – Sheldon

0

Sie wollen sehen child_process verwenden, Sie exec oder Laich, je nach Bedarf nutzen können. Exec gibt einen Puffer zurück (es ist nicht live), spawn gibt einen Stream zurück (es ist live). Es gibt auch einige gelegentliche Macken zwischen den beiden, weshalb ich die lustige Sache mache, um npm zu starten.

Hier ist ein modifiziertes Beispiel von einem tool I wrote die NPM-Installation für Sie zu laufen versuchte:

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

var isWin = /^win/.test(process.platform); 
var child = spawn(isWin ? 'cmd' : 'sh', [isWin?'/c':'-c', 'npm', 'install']); 
child.stdout.pipe(process.stdout); // I'm logging the output to stdout, but you can pipe it into a text file or an in-memory variable 
child.stderr.pipe(process.stderr); 
child.on('error', function(err) { 
    logger.error('run-install', err); 
    process.exit(1); //Or whatever you do on error, such as calling your callback or resolving a promise with an error 
}); 
child.on('exit', function(code) { 
    if(code != 0) return throw new Error('npm install failed, see npm-debug.log for more details') 
    process.exit(0); //Or whatever you do on completion, such as calling your callback or resolving a promise with the data 
}); 
Verwandte Themen