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.

Netlify deploy no puede conectarse con el backend de Heroku.

He creado un programa pequeño que funciona bien cuando lo ejecuto localmente. He implementado el backend en Heroku y puedo acceder a él yendo directamente a la URL (http://gymbud-tracker.herokuapp.com/users) o al ejecutar el frontend de forma local. Hasta aquí todo bien.

Sin embargo, cuando ejecuto npm run-script build y lo implemento en Netlify, algo va mal y cualquier intento de acceder al servidor me da el siguiente error en la consola:

auth.js:37 Error: Error de red
    en e.exports (createError.js:16)
    en XMLHttpRequest.p.onerror (xhr.js:99)

La acción que está causando ese error es la siguiente, si es relevante:

export const signin = (formData, history) => async (dispatch) => {
  try {
    const { data } = await api.signIn(formData);
    dispatch({ type: AUTH, data });
    history.push("../signedin");
  } catch (error) {
    console.log(error);
  }
};

He estado volviéndome loco tratando de averiguar qué es lo que cambia cuando lo construyo e implemento, pero no puedo resolverlo.

Como dije, si ejecuto el frontend de forma local, accede al backend de Heroku sin problemas, sin errores y funcionando exactamente como esperaba. La llamada a la API es correcta, creo: const API = axios.create({baseURL: ‘http://gymbud-tracker.herokuapp.com/’ });

Me preguntaba si podría ser un problema de acceso a la red a la base de datos de MongoDB a la que está vinculado Heroku, pero está abierto a “0.0.0.0/0” (todavía no he tomado ninguna precaución de seguridad, ¡no me mates!). La base de datos de MDB está en la misma colección que otros proyectos que he usado y que no han tenido este problema en absoluto.

¿Alguna idea de lo que debo hacer?

El frontend está en vivo aquí: https://gym-bud.netlify.app/
Y todo el proyecto está implementado en GitHub aquí: https://github.com/gordonmaloney/gymbud

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Podría haber algunos problemas potenciales que están causando este error al implementar el frontend en Netlify. Aquí hay algunas cosas a tener en cuenta:

    1. Configuración de CORS: Dado que el backend se implementa por separado en Heroku, debes asegurarte de que la configuración de CORS permita solicitudes desde tu dominio frontend (https://gym-bud.netlify.app/) para acceder al backend de Heroku. Una forma de hacer esto sería establecer el encabezado Access-Control-Allow-Origin en el servidor de Heroku al dominio de Netlify.
    2. Variables de entorno: Al implementar el frontend en Netlify, debes asegurarte de que todas las variables de entorno utilizadas por el frontend también estén disponibles en Netlify. En este caso, deberás asegurarte de que la variable baseURL para Axios esté configurada con la URL del backend de Heroku y que esta variable de entorno esté disponible en Netlify.

    3. HTTPS vs HTTP: Es posible que el error esté relacionado con contenido mixto, donde el frontend se está sirviendo a través de HTTPS pero el backend se está accesando a través de HTTP. Puedes intentar cambiar la baseURL de Axios para usar https en lugar de http al acceder al backend de Heroku.

    4. Problemas de conectividad de red: Verifica que no haya problemas de conectividad de red entre Netlify y Heroku que puedan estar causando el error. Puedes intentar acceder a la URL del backend de Heroku directamente desde un navegador en el servidor de Netlify para ver si hay errores de conexión.

    ¡Espero que esto te ayude a identificar el problema y resolverlo!

Comments are closed.