Siento que debería haber una respuesta fácil a esto que me falta. Raramente obtengo rechazos no controlados, sin embargo, cuando lo hago, el reason de process.on('unhandledRejection', (reason, promise) => {... no siempre es suficiente para encontrar el origen del error. Así que también esperaba registrar información sobre el [Object Promise] que se registra desde la promise .
Código:
module.exports = async (client, process, reason, promise) => { const date = new Date(); const formatDate = stripIndents`${(date.getMonth() + 1) .toString().padStart(2, '0')}-${date.getDate() .toString().padStart(2, '0')}-${date.getFullYear() .toString().padStart(4, '0')}` const formatTime = stripIndents`${date.getHours() .toString().padStart(2, '0')}-${date.getMinutes() .toString().padStart(2, '0')}-${date.getSeconds() .toString().padStart(2, '0')}` var dir = './logs'; if (!fs.existsSync(dir)) fs.mkdirSync(dir); fs.appendFile(`./logs/${formatDate} UnhandledRejection.log`, `${formatDate} ${formatTime}: A new unhandledRejection: at promise ${promise} for: ${reason}\n`, function (err) { if (err) throw err; console.log(`A new UnhandledRejection has been logged to: ${formatDate} UnhandledRejection.log`) }); }Esto, por supuesto, registra algo similar a esto en mi archivo de registro:
28-09-2021 00-04-15: Un nuevo error de rechazo no controlado [promesa de objeto] para TypeError: el volumen debe ser un número. Que en este caso, sé que me estoy refiriendo a mi volumen para mi reproductor de música, pero cuando obtengo algo como esto:
08-10-2021 07-03-02: A new unhandledRejection error [object Promise] for TypeError [ERR_UNESCAPED_CHARACTERS]: Request path contains unescaped characters , puede ser muy difícil encontrar de dónde proviene este problema.
Aunque el reason suele ser suficiente para encontrar el origen del error, obtener acceso a [Object Promise] podría ayudar a identificar mejor el error. promise.catch(...) , promise.then(...) , promise.then(...).catch(...) , todo lo cual resultó en un ciclo de registro de consola infinito.