2012-07-26 35 views
7

我正在用windows上的node.js創建一個自動化web應用程序構建過程。我試圖通過Google關閉Java程序來運行我們的代碼。我閱讀了節點文檔中有關child_process的文檔。它提到它不適用於Windows。是否有包裝或解決此問題?如何在windows上運行node.js中的外部程序?

繼承人的代碼,我嘗試運行。

var _exec = require('child_process').exec; 
_exec('java ' + '-jar '+ COMPILER_JAR +' --js '+ srcPath +' --js_output_file '+ distPath, 
    function(e){ 
     echo("google closure done...."); 
     echo(e); 
    }); 
+1

我想知道如果有一個節點包或其他一些變通,我不知道。 Node整體運行良好,這個jar文件步驟僅佔整個流程的一小部分,而且大部分團隊都在OSx/Linux上。 – Joel 2012-07-26 22:49:33

回答

13

我有控制建立在Windows XP中的隊列中的Web服務器應用程序,我用它無需任何額外的軟件包運行批處理文件或可執行文件。

我會檢查的回調和標準錯誤的錯誤參數,因爲這可能會幫助你發現它不工作的原因。

我的例子解掉我的服務器,我希望有助於:

var theJobType = 'FOO'; 
var exec = require('child_process').exec; 
var child = exec('Test.exe ' + theJobType, function(error, stdout, stderr) 
    { 
     if (error != null) { 
      console.log(stderr); 
      // error handling & exit 
     } 

     // normal 

    }); 
+0

謝謝。我得到的錯誤是: 'java'不被識別爲內部或外部命令, 可操作的程序或批處理文件。 節點不能使用系統環境變量嗎? – Joel 2012-07-26 23:04:08

+1

我剛剛測試過,把我的exe放入路徑中的一個文件夾中,並找到它。但是如果我放入一個不存在的exe名字,我會得到確切的錯誤。所以看起來像解決java.exe的路徑/位置問題 – miltonb 2012-07-26 23:07:40

+0

是的,這是問題。我現在添加了java.exe的完整路徑及其工作。謝謝。現在我需要使其在其他機器配置上工作。 java.exe不會在OSX或Linux上工作。 – Joel 2012-07-26 23:35:35