2013-07-18 18 views
8

Piszę aplikację internetową na komputery stacjonarne, która korzysta z pliku node.js w celu uzyskania dostępu do lokalnego systemu plików. Obecnie mogę używać pliku node.js do otwierania i kopiowania plików w różnych miejscach na dysku twardym. Chciałbym również umożliwić użytkownikowi otwieranie określonego pliku przy użyciu aplikacji powiązanej z typem pliku. Innymi słowy, jeśli użytkownik wybierze "myfile.doc" w środowisku Windows, uruchomi MSWord z tym plikiem.Uruchom aplikację zewnętrzną z pliku node.js

Muszę być ofiarą terminologii, ponieważ nie byłem w stanie znaleźć niczego poza tworzeniem procesów potomnych, które komunikują się z node.js. Chcę tylko uruchomić plik, który użytkownik może wyświetlić, a następnie pozwolić mu zdecydować, co z nim zrobić.

Dzięki

Odpowiedz

11

można to zrobić

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

to nie bezpieczne myśl, aby upewnić się, że komenda nie wykazują żadnych błędów lub jakiegokolwiek niepożądanego wyjście

należy dodać parametr wywołania zwrotnego child_process.exec(cmd,function(error,stdout,stderr){})

, a następnie możesz pracować z wydarzeniami, aby nie blokować wykonywania skryptu, a nawet używać zewnętrznego skryptu node.js, który uruchamia i obsługuje wyjścia z procesów, które spawnujesz ze skryptu "głównego".

+0

Dzięki, to bardzo pomogło. Nie musiałem jednak dodawać procesu process.exit (0), ponieważ aplikacja węzła zawierającego nie powinna znikać. –

4

W poniższym przykładzie użyłem komendy "mate" dla textmate do edycji pliku hello.js, możesz uruchomić dowolne polecenie z child_process.exec, ale aplikacja, do której chcesz otworzyć plik, powinna dostarczyć ci opcji wiersza poleceń.

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 
}) 

Nacisk na którym 'exit' jest tzw. To działa poprawnie w oknach.

+0

Czy to może być używane po stronie klienta w aplikacji ionic2? kompilacja mówi, że nie może znaleźć child_process. Dzięki – Marie

Powiązane problemy