La API store-locator-custom no funciona en producción

Estoy desarrollando un componente custom con graphQL para que detecte la información de la API
"vtex.admin-pickup-points": "2.x",
La query funciona perfectamente en el worskpace e incluso funciona perfectamente en el master. Pero cuando veo la tienda productiva, falla y el mensaje de error del useQuery es este:

GraphQL error: Cannot read property ‘status’ of undefined

Es lo único que dice. Y no entiendo por qué solo falla en la tienda productiva cuando debería ser un calco de lo que pasa en el master.

interfaces.json :

{
  "custom-store-locator": {
    "component": "StoreLocator",
    "render": "client"
  }
}

query graphQL:

query getBranchesList {
  getPickupPoints(perPage: 50, keyword: "totalStores") {
    items {
      id
      isActive
      name
      tagsLabel
      address {
        state
        city
        location {
          latitude
          longitude
        }
        postalCode
        street
        number
      }
      instructions
    }
  }
}

Hola @Luca

Primero, es importante verificar si la API “vtex.admin-pickup-points” está configurada correctamente en la tienda productiva. Verifique si la versión de la API es la misma que la utilizada en el workspace y en el master.

Además, es posible que haya una diferencia en la forma en que se llama a la API en la tienda productiva en relación con el workspace y el master. Verifique si la consulta se está llamando de la misma forma en todos los entornos.

Otra cosa que puede verificar es si hay alguna configuración específica en la tienda productiva que esté afectando la llamada a la API. Por ejemplo, hay alguna configuración de seguridad o de firewall que esté bloqueando la llamada a la API?

En relación con el error “Cannot read property ‘status’ of undefined”, es posible que el error esté ocurriendo porque la respuesta de la API está llegando como undefined en lugar de un objeto con la propiedad status. Esto puede ser causado por una falla en la llamada a la API o por una configuración incorrecta.

Para ayudar a depurar el problema, puede intentar agregar más registros o información de error en su consulta para entender mejor lo que está sucediendo. Por ejemplo, puede agregar un console.log para imprimir la respuesta de la API antes de intentar acceder a la propiedad status.

1 Like

Buenos días:
¡Gracias por la respuesta!
Respondo algunas cosas al respecto:

  1. ¿La tienda productiva no toma las versiones de las apps que estén en el master? Yo pensaba que era exactamente una replica del master.
  2. Respecto a lo de la configuración específica lo voy a averiguar mejor.
  3. La data de la query es undefined, sí. Pero ese error que mencioné antes es un console.log del error que devuelve la query, muestro el código para que se entienda mejor:
  const { loading: loadingBranches, error: errorBranches, data: dataBranches } = useQuery(GET_BRANCHES_LIST)

  if (errorBranches) console.error('Error branches loading: ', errorBranches.message)

Es decir, ni siquiera llego a usar la data cuando me llega ese error. (Que igualmente me llega undefined, como dije anteriormente). Si hay manera de obtener más información acerca del error, no se como hacerlo.
Saludos

1 Like

@Luca Hola,

Entiendo mejor ahora. Sí, tienes razón al decir que la tienda productiva debe ser una réplica del master, pero a veces pueden haber diferencias de configuración o de entorno que afectan el comportamiento de la aplicación.

Sobre el error que estás viendo, es extraño que el error sea solo “Cannot read property ‘status’ of undefined” sin más información. Una cosa que puedes intentar es imprimir más información sobre el error, como el objeto de error completo, para ver si hay alguna otra información útil.

Por ejemplo, puedes intentar hacer esto:

if (errorBranches) {
console.error('Error branches loading: ', errorBranches);
console.error('Error branches loading (JSON): ', JSON.stringify(errorBranches, null, 2));
}

Esto puede ayudar a mostrar más información sobre el error, como la pila de llamadas o otras propiedades del objeto de error.

Otra cosa que puedes intentar es verificar si hay algún problema con la autenticación o autorización de la API. A veces, la API puede retornar un error de autenticación o autorización que no es obvio.

Además, puedes intentar verificar si hay algún problema con la configuración de la API en sí. Por ejemplo, puedes verificar si la API está configurada correctamente en el archivo vtex.admin-pickup-points y si la versión de la API es correcta.

Si sigues teniendo problemas, puede ser útil intentar hacer una llamada directa a la API utilizando una herramienta como Postman o cURL para ver si el problema es específico de tu aplicación o si es un problema más general con la API.

1 Like