Завершение записи потока во внешний модуль при ошибке программы - PullRequest
0 голосов
/ 10 апреля 2020

Как сделать поток записи во внешнем модуле завершающим sh запись при ошибке?

Я пытался использовать следующий код, но ошибка все еще выдается до поток заканчивается. Я также пытался передать функцию обратного вызова (содержащую throw err;) в функцию stop() и заставить ее выполнить, используя logfile.on('end', () => { callback(); }), но это ничего не делает.

index. js

process.on('uncaughtException', (err) => {
    logger.stop(); // function in external module
    throw err;
});
...
??? Oh no! Waffles broke the code, because they're evil!

регистратор. js

module.exports = {
    ...
    stop: () => {
        logfile.end(); // logfile is a global variable containing a write stream
    }
}

1 Ответ

1 голос
/ 11 апреля 2020

Проблема может быть решена путем отображения ошибки с помощью console.log(err); для предотвращения автоматического закрытия программы после отображения ошибки и вызова process.exit(1); во внешнем модуле, когда вызывается событие finish.

index. js

process.on('uncaughtException', (err) => {
    console.error(err);
    logger.stop();
});
...
??? Oh no! Waffles broke the code, because they're evil!

logger. js

module.exports = {
    ...
    stop: () => {
        logfile.on('finish', () => { process.exit(1); });
        logfile.end();
    }
}
...