es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , ,

Answer

  1. Avatar for 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 el projectId y keyFilename para la autenticación.

    Por ejemplo:

    const {ErrorReporting} = require('@google-cloud/error-reporting');
    
    const errors = new ErrorReporting({
      projectId: 'my-project',
      keyFilename: '/ruta/al/archivo-de-clave.json',
      // ... otras opciones según sea necesario
    });
    

    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.

Comments are closed.