Windowsでnodejsを使用してバッチファイルから正しい終了コードを取得しようとしています。child_processがバッチファイルから正しい終了コードを返さない
私が期待されるエラーコードを参照して、コマンドラインから実行する場合:
ml.bat profile bootstrap
ERROR: [".../deploy/lib/RoxyHttp.rb:362:in
block in request'", ".../deploy/lib/RoxyHttp.rb:352:in
loop'", ".../deploy/lib/RoxyHttp.rb:352:inrequest'", ".../deploy/lib/MLClient.rb:110:in
go'", ".../deploy/lib/server_config.rb:1963:inget_sid'", ".../deploy/lib/server_config.rb:2056:in
execute_query_7'",".../deploy/lib/server_config.rb:510:inexecute_query'",".../deploy/lib/server_config.rb:709:in
bootstrap'", "deploy/lib/ml.rb:168:in `'"
私は終了コードが非ゼロであったことを確認します。
echo %errorlevel%
12
は以下でありますNodeJSで使用する対応するコード - 常に0の終了コードを与える:
var stdout = "";
let proc = child_process.spawn("ml.bat", ["profile", "bootstrap"], {shell:true});
proc.stdout.on('data', d => stdout += d.toString() + '\n';);
proc.on('close', exitcode => {
console.log(stdout);
if (exitcode !== 0) {
console.log('ERROR in command');
process.exit();
}
});
私はいくつかのバリエーション(exec、execSync、spawnSync)とオプション(シェル "cmd.exe/c")を使用しようとしましたが、ノードを使用してゼロ以外のコードを得ることはできません。プログラムはstderrに出力を出力しません。
NodeJSで正しいエラーコードを取得するにはどうすればよいですか?
あなたはコールバックに渡されたパラメータに 'exitcode'という名前を付けましたが、' code'をテストします。私はこれがあなたのサンプルコードのタイプミスであると仮定します。これは 'ReferenceError'の結果が –
となるためです。打ち間違え。ありがとう! – chriskelly