Estoy conectado a un archivo remoto enter.js y utilizando una configuración similar de webpack con la versión 5 de webpack. Definimos el nombre del archivo como enter.js remoto, que puede ser conectado desde nuestra aplicación principal. Exponemos el índice de origen, que exporta los módulos de encabezado, perfil, pie de página y neuromodal. Si activamos el botón de error del componente, la aplicación se bloquea. Para resolver esto, envolvemos el componente de encabezado con un límite de error, que muestra una interfaz de usuario alternativa y notifica a los usuarios. Hacemos lo mismo para el archivo app.js, utilizando un límite de error de contenedor. Al definir estos límites de error, podemos capturar y rastrear errores utilizando la API de New Relic. Informamos los errores causados por el componente de encabezado y la aplicación principal, pasando metadatos como el nombre del módulo, la versión del módulo, el tipo de error, la fuente del componente y el ID de usuario. Rastrear errores con la API es una buena práctica, especialmente cuando hay problemas con API externas como la API de Rekordmort.
Estoy conectado a este archivo remoto enter.js, y también puedo usar una configuración similar de webpack con la versión 5 de webpack utilizando la federación de módulos. Estoy definiendo este nombre de archivo, el enter.js remoto, al que podemos conectar desde nuestra aplicación principal y exponer el índice de origen, que no es más que un archivo que exporta los módulos de encabezado, perfil, pie de página y neuromodal.
Entonces, como puedes ver, si volvemos a nuestra aplicación, es posible que hayas notado que tenemos algunos otros botones que se llaman error del componente. Aquí, si activo este botón, es posible que hayas notado que toda mi aplicación se bloquea. Si vuelvo a cargar mi aplicación e intento hacer lo mismo desde mi encabezado y hago clic en error del componente, la aplicación se bloquea nuevamente. El error del componente que provoca un error dentro del componente del módulo de encabezado afecta a toda la aplicación y hace que toda la aplicación se bloquee. ¿Y cómo podemos resolver eso? Lo que realmente podemos hacer es, además de nuestro componente de encabezado, el componente de encabezado es un simple elemento de encabezado que define un título y algunos botones, y podemos envolverlo con un límite de error y exportarlo como predeterminado. El límite de error es simplemente otro componente, y pasamos el nombre del componente en el que ocurre este error. Entonces, si abro este límite de error, puedes ver que no es más que un simple componente de React que puede derivar algún estado cuando ocurre un error y establece el estado de que hay un error. En base a esto, realmente podemos mostrar una interfaz de usuario alternativa en lugar del propio componente y notificar a nuestros usuarios. Podemos hacer lo mismo para nuestro app.js y podemos envolver el app.js con un límite de error de contenedor como aquí. De manera similar, y puedes ver que el límite de error de contenedor es un componente de React similar que deriva algún estado, define el estado y podemos mostrar una interfaz de usuario alternativa cuando ocurre un error.
Volviendo a nuestra aplicación ahora, si actualizo la aplicación, puedes ver que ahora, cuando activo un error del componente desde el módulo de encabezado, esto ya no afecta a la aplicación principal Mi Cuenta. Mostramos una interfaz de usuario alternativa, nos notifica sobre un error en el módulo de microfrontend del encabezado y podemos restablecerlo, podemos activar nuevamente el error del componente sin que la aplicación se bloquee. Podemos hacer lo mismo en la aplicación principal Mi Cuenta. Pero en este caso, toda la aplicación se bloqueará porque esto afecta a toda la aplicación, a los módulos que renderizamos dentro de esta aplicación principal. Ahora que hemos definido estos límites de error, ¿cómo podemos usarlos? En realidad, cuando capturamos estos errores en este componente, podemos rastrear algunos errores. Estamos utilizando la API de New Relic del objeto window. Cargamos New Relic en nuestro archivo index.html y podemos definir y rastrear algunos errores que ocurren dentro de este componente. Entonces, cuando envolvemos el componente de encabezado con este límite de error modular, cuando ocurre un error dentro de este componente de encabezado, podemos capturar este error dentro de este componente. De esa manera, estamos utilizando la API de New Relic que se llama noticeError para informar el error que es causado por el componente de encabezado y pasar alguna configuración, algunos metadatos, que van a ser el nombre del módulo y la versión del módulo, como puedes ver aquí en la parte inferior que cargamos desde nuestro paquete. Y alguna información adicional como el tipo de error, que es límite de error. Alguna fuente del componente, que es un nombre de prop que pasamos desde el componente que envolvemos con este límite. Y también el ID de usuario, que es el ID de usuario para nuestro usuario en esta sesión. Podemos hacer lo mismo en el límite de error de contenedor. Como puedes ver aquí, en realidad estamos informando el mismo error, no el mismo error, pero el error que ocurre en la aplicación principal. Y podemos definir otro límite y los errores que ocurren dentro de la aplicación principal. ¿Qué más podemos rastrear? Como notamos anteriormente, usamos el perfil para obtener algunos personajes de la API de Rekordmort. Pero ¿qué sucede cuando hay un problema con esta API? Necesitaremos, y es una práctica muy buena, rastrear este tipo de errores.
Comments