node child_process 在 stderr 中为 mongodump 提供有效输出

node child_process gives valid output in stderr for mongodump

我正在从 nodejs child_process 执行 mongodump 命令。

我已经尝试了 execspawn,但是 mongodump 打印的进度是命中 stderrdata 事件而不是 stdout

var exec = require('child_process').exec,
    ls    = exec('mongodump --gzip --archive="/home/test-machine/test.archive" --db myDB');

ls.stdout.on('data', function (data) {
  console.log('stdout: ' + data.toString());
});

ls.stderr.on('data', function (data) {
  console.log('stderr: ' + data.toString());
});

ls.on('exit', function (code) {
  console.log('child process exited with code ' + code.toString());
});

mongodump 没有崩溃,也没有抛出任何错误,它正在正常执行。但不知何故,nodejs 将输出视为 stderr

mongodump 将日志消息写入 stderr,这并不少见,尽管它会使解析输出的错误变得更加困难,因为您需要手动过滤掉错误消息。