Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

206
Vistas
React/Javascript - TypeError: no se pueden leer las propiedades de undefined (leyendo 'json')

React & Javascript novato aquí, estoy tratando de construir mi primer proyecto React. Lo que quiero hacer es tener un botón que busque automáticamente los últimos partidos que jugué en un juego. Estoy usando una API que, cuando se llama correctamente, devuelve este json:

 {data: [{id: 0, internal_id: "_map_id_halo1_pillar_of_autumn", name: "The Pillar Of Autumn"}, …]}

Quiero extraer el nombre de cada objeto de datos y mostrar una lista desordenada debajo del botón.

Pero cuando hago clic en el botón, el navegador muestra el error:

TypeError: no se pueden leer las propiedades de undefined (leyendo 'json')

El código que hace lo que mencioné es el siguiente:

 async fetchHaloMaps() { const url = 'https://cryptum.halodotapi.com/games/hmcc/metadata/maps' const mapNames = []; fetch(url, { "method": 'GET', "headers": { 'Content-Type': 'application/json', 'Cryptum-API-Version': '2.3-alpha', 'Authorization': 'Cryptum-Token XXX' } }) .then(response => { console.log(response); if (!response.ok) throw new Error("Response not ok!"); }) .then(response => response.json()) .then(data => { const i=0; for (const d of data) { mapNames[i] = d.name; i++; } this.setState((state, props) => ({ numberOfMaps : i })); }) .catch(error => { console.log("There was an error: " + error); }); }

Creo que estoy "analizando" el JSON de manera incorrecta. Pero en el JSON, los datos son, de hecho, una matriz con un atributo de "nombre". Así que quería hacer un ciclo de la matriz de datos y copiar el atributo "nombre", pero el código anterior no funciona. Sé que la solicitud HTTP con fetch tiene éxito, ya que en console.log puedo ver el objeto de respuesta y tiene el campo 200 OK, y puedo ver el JSON asociado con las herramientas de desarrollo del navegador.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

No .then nada de esto. Entonces:

 .then(response => { console.log(response); if (!response.ok) throw new Error("Response not ok!"); })

por lo que no hay ningún valor que se pase al siguiente .then .

Si bien podría return response , un mejor enfoque sería eliminar el intermedio .then por completo; solo inserte un .then cuando necesite esperar algo asíncrono. En el momento en que recibe la respuesta, puede verificar si está bien y luego devolver el .json() , sin esperar en el medio.

 .then(response => { if (!response.ok) { throw new Error("Response not ok!"); } return response.json(); }) .then(data => {
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda