execSyn c, по-видимому, приводит к случайной ошибке «Невозможно вызвать запись после разрушения потока» - PullRequest
0 голосов
/ 27 марта 2020

Я использую Node.js 13.6.0, и если я запускаю блок кода ниже:

  const { execSync } = require('child_process');
  const { log } = console;
  const run = cmd => {
    const stdout = execSync(cmd);
    log(`cmd: ${cmd}${'\n'}stdout: ${stdout}`);
  }
  run(`mongodump ${mongodumpCmd} -o "${backupPath}/${backupName}"`);
  run(`cd ${backupPath}/${backupName}; tar -zcvf ${tmpFilePath} .`);
  run(`openssl enc -aes-256-cbc -e -k ${password} -in ${tmpFilePath} -out ${filePath}`);
  run(`rm ${tmpFilePath}`);
  run(`rm -rf ${backupPath}/${backupName}`);
  log(`created backup ${backupName} at ${backupPath}`);

Это будет работать большую часть времени, но иногда я получаю ошибку Cannot call write after a stream was destroyed. Я не могу воспроизвести эту проблему в 100% случаев, что очень странно ... мягко говоря. Что может быть источником этой ошибки и как я могу ее исправить?

PS Это, похоже, относится к openssl. Если я удаляю openssl из команд, он работает нормально.

...