Soy nuevo en SSR, así que no estoy seguro de si este problema y mi solución son prácticas estándar, pero no puedo imaginarlo.
Mi objetivo es tener una página dinámica que permita a los usuarios agregar/eliminar elementos en la página. Originalmente programé este componente con la intención de que solo fuera un proyecto de reacción del lado del cliente, pero ahora quiero ponerlo en un servidor. Ahora, cuando estoy traduciendo mi código al nuevo proyecto, me encontré con un par de errores que tienen que ver con mi backend ejecutando el código que se supone que solo debe ejecutarse en el lado del cliente.
Por ejemplo, me encontré con este problema antes de que React Redux bundle.js se lanzara a la solicitud , y pude resolver este problema con una solución de Janky donde me aseguro de que se pasa el código del lado del cliente y detengo la ejecución de su paso desde el back-end Ahora tuve que refactorizar mi código para no usar la función fetch() porque no es una función que reconozca el backend del nodo y ahora se queja de mi uso del objeto del document porque eso tampoco es una cosa en el nodo.
Puedo seguir importando nuevos módulos para corregir los errores y evitar que mi sitio web se bloquee, pero me siento como si estuviera en un bote pequeño reparando nuevos agujeros con cinta adhesiva esperando encontrar el siguiente agujero.
Aquí hay una imagen de mi configuración si es necesario. También tengo imágenes adicionales en mi pregunta de desbordamiento de pila anterior (enlace arriba)
Para el problema de bundle.js , no estoy seguro de entender por qué sucede.
Para el problema de fetch , creo que este es un problema común con SSR y si lo implementa usted mismo, debe manejar las condiciones en diferentes lugares de su aplicación:
if(!!window) { // do client-side stuff like accessing // window.document }Básicamente, el uso más común de SSR es manejar la primera ejecución de su aplicación en el lado del servidor. Esto incluye:
Una vez que se realiza la ejecución, su servidor devuelve la aplicación js incluida con la tienda hidratada y la interfaz de usuario y se la devuelve al cliente. Las solicitudes posteriores o la actualización de la ruta se ejecutarán en el lado del cliente, por lo que puede usar directamente fetch o react-router
Las ventajas de hacer SSR son:
Hay muchas bibliotecas que pueden ayudarlo con SSR, así como marcos como nextjs , use-http