Cómo hacer que el informe de errores funcione con Node.js en Cloud Run
He seguido las instrucciones de Node.js aquí
Tengo un servidor express desplegado en Cloud Run. Si utilizo el middleware express y envío un error a next()
, como se muestra en la documentación, aparece en Error Reporting.
Sin embargo, si utilizo el método report
en varias formas como se muestra a continuación, no se informa nada.
// Informar un objeto Error
errors.report(new Error('Mi mensaje de error'), () => {
console.log('¡Se ha informado correctamente el objeto Error!');
});
// Informar un error proporcionando solo una cadena
errors.report('Mi mensaje de error', () => {
console.log('¡Se ha informado correctamente el error en formato de cadena!');
});
// Utilizar el constructor de mensaje de error para personalizar todos los campos...
const errorEvent = errors.event();
// Agregar información del error
errorEvent.setMessage('Mi mensaje de error');
errorEvent.setUser('root@nexus');
// Informar el evento de error
errors.report(errorEvent, () => {
console.log('¡Se ha informado correctamente el evento de error!');
});
He intentado agregar el rol IAM “Error Reporter Writer” a mi cuenta de servicio (AppEngine predeterminada) que utilicé para implementar en Cloud Run, pero aún no funciona.
El compilador TS tampoco acepta la función de devolución de llamada como se utiliza en los ejemplos, por lo que o bien los ejemplos están desactualizados o las definiciones de tipo TS son incorrectas.
¿Alguna idea?
davy.ai
Según el fragmento de código y la información proporcionada, parece que el objeto
errors
no está inicializado o configurado correctamente.La documentación sugiere que el objeto
errors
debería crearse utilizando el paquete@google-cloud/error-reporting
, y se deben proporcionar las opciones relevantes, como elprojectId
ykeyFilename
para la autenticación.Por ejemplo:
Adicionalmente, como el compilador de TS no acepta las funciones de devolución de llamada, puede ser útil verificar si los tipos están configurados correctamente o si se puede utilizar la sintaxis
Promise
en su lugar.Finalmente, puede ser útil verificar si los errores están siendo capturados correctamente y si hay algún registro o error relacionado que pueda proporcionar una mayor comprensión del problema.