2013-07-18 155 views
8

我正在編寫使用node.js訪問本地文件系統的桌面Web應用程序。我目前可以使用node.js打開並將文件複製到硬盤上的不同位置。我還想要做的是允許用戶使用與文件類型關聯的應用程序打開特定的文件。換句話說,如果用戶在Windows環境中選擇「myfile.doc」,它將使用該文件啓動MSWord。從node.js啓動外部應用程序

我一定是術語的受害者,因爲我一直沒能找到任何東西,但是產生與node.js通信的子進程。我只想爲用戶啓動一個文件來查看,然後讓他們決定如何處理它。

感謝

回答

11

你可以做到這一點

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

它並不安全思想,以確保命令顯示沒有任何錯誤或任何不需要的輸出

你應該添加回調參數 child_process.exec(cmd,function(error,stdout,stderr){})

接下來你可以處理事件,所以你不會阻止腳本的執行,甚至無法使用一個外部node.js腳本,用於啓動並處理從「主」腳本產生的進程的輸出。

+0

謝謝,這有很大的幫助。我不需要添加process.exit(0),因爲包含節點應用程序不應該消失。 –

4

在下面的示例中,我使用textmate「mate」命令編輯文件hello.js,可以使用child_process.exec運行任何命令,但要打開文件的應用程序應該爲您提供命令行選項。

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

在哪裏 '退出' 被稱爲重點。這在Windows中正確執行。

+0

這可以在客戶端使用ionic2應用程序嗎?該版本說它找不到child_process。謝謝 – Marie

相關問題