Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

203
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda