2013-07-18 16 views
8

Ich schreibe eine Desktop-Webanwendung, die node.js verwendet, um auf das lokale Dateisystem zuzugreifen. Ich kann derzeit node.js verwenden, um Dateien an verschiedenen Orten auf der Festplatte zu öffnen und zu kopieren. Was ich auch tun möchte ist, dass der Benutzer eine bestimmte Datei mit der Anwendung öffnen kann, die dem Dateityp zugeordnet ist. Mit anderen Worten, wenn der Benutzer "myfile.doc" in einer Windows-Umgebung auswählt, wird MSWord mit dieser Datei gestartet.Starten Sie eine externe Anwendung von node.js

Ich muss ein Opfer der Terminologie sein, weil ich nichts anderes als das Laichen von Kindprozessen finden konnte, die mit node.js kommunizieren. Ich möchte nur eine Datei starten, die der Benutzer sehen kann und dann entscheiden lassen, was damit zu tun ist.

Dank

Antwort

11

Sie können dies tun

var cp = require("child_process"); 
cp.exec("document.docx"); // notice this without a callback.. 
process.exit(0); // exit this nodejs process 

es nicht sicher Gedanken, um sicherzustellen, dass der Befehl keine Fehler oder eine unerwünschte Ausgabe zeigen

Sie den Rückruf Parameter child_process.exec(cmd,function(error,stdout,stderr){}) hinzufügen sollten

und als nächstes können Sie mit Ereignissen arbeiten, so dass Sie die Ausführung des Skripts nicht blockieren oder sogar nutzen eines externen node.js-Skripts, das Ausgaben von Prozessen startet und verarbeitet, die Sie aus einem "Master" -Skript erzeugen.

+0

Danke, das hat sehr geholfen. Ich musste jedoch process.exit (0) nicht hinzufügen, weil die enthaltende Knoten-App nicht verschwinden sollte. –

4

Im folgenden Beispiel habe ich textmate "mate" -Befehl verwendet, um die Datei hello.js zu bearbeiten. Sie können einen beliebigen Befehl mit child_process.exec ausführen, aber die Anwendung, in der Sie die Datei öffnen möchten, sollte Ihnen Befehlszeilenoptionen bereitstellen.

var exec = require('child_process').exec; 
exec('mate hello.js'); 
1
var childProcess = require('child_process'); 
childProcess.exec('start Example.xlsx', function (err, stdout, stderr) { 
     if (err) { 
     console.error(err); 
     return; 
    } 
    console.log(stdout); 
    process.exit(0);// exit process once it is opened 
}) 

Schwerpunkt auf dem 'exit' genannt wird. Dies wird ordnungsgemäß in Windows ausgeführt.

+0

Kann dies auf der Clientseite in einer ionic2 App verwendet werden? Der Build sagt, dass er child_process nicht finden kann. Vielen Dank – Marie

Verwandte Themen