シェルコマンドを同期して実行し、エラーがあった場合はシェルコマンドの結果を確認したい。NodeJS:シェルコマンドを同期的に実行してエラーを検出する方法
私はshellJSとそのexec-methodを使用します。
残念ながら、成功ハンドラは決して到達しません。私のshell.execステートメントの後のステートメントはすぐに実行されます。
これは私のコードです:
function * exec(cmd, verbose) {
if(verbose) console.log("\nCMD " + cmd);
var ret = 0;
shell.exec(cmd, function(code, stdout, stderr) {
console.log("AAAAA")
ret = code;
if(code !== 0) console.log(stderr)
});
console.log("BBBBB")
if(ret !== 0 && ret !== undefined) {
console.log("ERROR: there is an error occured: ", ret);
process.exit();
}
return ret;
}
私は、このメソッドを呼び出します。
yield exec('ls -l', true);
yield exec('ls -l ..', true);
はconsole.log( "AAA")他のすべてのコンソール後のアプリの最後に表示されます。 logs .... console.log( "BBB")は、shell.execコマンドによって出力がトリガーされる直前に表示されます。
shell.jsのREADMEは説明する:特に指定のない限り
は、同期的に与えられたコマンドを実行します。 同期モードでは、ShellString( ShellJS v0.6.xと互換性があり、{code:...、 stdout:...、stderr:...}の形式のオブジェクトを返します)を返します。それ以外の場合は、子プロセス オブジェクトを返し、コールバックは引数(code、stdout、stderr)を取得します。
何が間違って行う、