2012-07-26 14 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

私は認識していないよ周りのノードパッケージまたは他のいくつかの作品がある場合、私は思ったんだけど。ノードは全体的に大きく動作していますが、このjarファイルの手順は全体的なプロセスのごく一部であり、チームのほとんどはOSx/Linux上にあります。ありがとう、 – Joel

答えて

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

+1

私はちょうどテストした、パス内のフォルダに私のexeファイルを置くと見つかりました。しかし、存在しないexe名をつけると正確なエラーが出ます。だから、java.exeのパス/場所を解決する問題と思われる – miltonb

+0

はい、それは問題でした。私はjava.exeへの完全なパスを追加しました。ありがとう。今は他のマシン構成でも動作させる必要があります。 java.exeはOSXまたはLinuxで動作しません。 – Joel