Я получил ошибку в моем stderr, но они не запускаются и обрабатывают выход с кодом 0. Поэтому я анализирую свой stderr и пытаюсь остановить дочерний процесс внутри этой функции.Вот мой код:
exports.runCmd = function (req, res, cmd, originalFile, newFile) {
const promise = spawn(cmd, { shell: true })
const childProcess = promise.childProcess
console.log(cmd)
childProcess.stderr.on('data', function (data) {
console.error("STDERR:", data.toString())
if (data.toString() === 'Can not open the file as archive' || data.includes('Document is empty')) {
childProcess.kill()
genericFunctions.resError(res, 415, 'Type de fichier non supporté 3')
}
})
childProcess.stdout.on('data', function (data) {
//console.log("STDOUT:", data.toString())
})
childProcess.on('error', function (err) {
genericFunctions.resError(res, 415, 'Type de fichier non supporté 4', err)
})
childProcess.on('exit', function (exitCode) {
console.log("Child exited with code: " + exitCode)
if (res === undefined) {
fs.unlinkSync(originalFile)
return true
} else if (!fs.existsSync(newFile)) {
console.log('Le fichier n\'existe pas')
genericFunctions.resError(res, 415, 'Type de fichier non supporté 5')
} else if (typeof req.body.download !== 'undefined' && req.body.download) {
console.log('Téléchargement')
genericFunctions.resDownload(req, res, originalFile, newFile)
} else {
console.log('Envoi du lien')
genericFunctions.resLink(req, res, originalFile, newFile)
}
})
}
Итак, я пытаюсь остановиться с помощью childProcess.kill (), но я все еще получил другую строку из stderr, поэтому он переустанавливает заголовки и сбой приложения