2016-05-29 5 views
0

私はnodejsからCCをexecししよう:Nodejs V6:execを「閉鎖コンパイラ」をstdout常に空

// already tried exec, spawn 
process.execFile('java', [ 
     '-jar', 'CC-path', '-js', 'js-path', 'other-options' 
    ], 
    (error, stdout) => { 
     if (error != null) { 
      throw error // if there is any errors then will showed in terminal 
     } 
     console.log(stdout.toString()) // but stdout always empty when no errors exist 
    } 
) 
// I have tested by manual running the command in terminal and got output: 
// "...many lines before" 
// 0 error(s), 10 warning(s), 74.2% typed 

は、どのように私はすべてのときに私の手動タイプのような「Nodejs幹部」出力ターミナルでコマンドを得ることができますか?

答えて

1

.execFile()は、3つのパラメータ(err, stdout, stderr)を取得するコールバックをとります。あなたは何が起こっているかを見るために3つすべてを記録する必要があります。私の推測では、あなたが無視している何かがstderrにあるということです。何かがある場合は、errも記録していません。通常の非同期コールバック内からthrowを行うことがちょうどいずれかが、あなたが今までそれをキャッチすることができますことをどこではない、child_processライブラリの腸の中に投げるので

process.execFile('java', [ 
     '-jar', 'CC-path', '-js', 'js-path', 'other-options' 
    ], (error, stdout, stderr) => { 
     if (error) { 
      console.log(error); 
      return; 
     } 
     console.log("stdout: ", stdout); 
     console.log("stderr: ", stderr); 
    } 

はまた、あなたのthrow errorはおそらく有益な何もしません。

+0

hi @ jfriend00!私はちょうど試みたが、 "stderr"も空です。 – mcuong

+1

3つのパラメータがすべて空であると私に伝えていますか?どのコマンドラインを実行しようとしているのか分かりませんが、実行しようとしている実際のJARファイルはどこにありますか? Javaのインタプリタが動いているように聞こえて、何もしていないので、ただ終了します。また、プロセスを殺す 'maxBuffer'を超えている可能性もあります。 – jfriend00

+0

エラーが存在する場合は表示されますが、エラーがない場合は出力されません。 Javaは正常に動作し、jsファイルは正しく縮小されましたが、10個の警告があり、Nodjs execのstdoutは空になりました。 – mcuong