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

227
Visualizações
TypeError: no se puede leer la propiedad de undefined (leyendo 'mapa') mientras se obtiene de la API

Estoy trabajando en un proyecto de sitio de blog de pila completa en el que he creado una API para el back-end y funciona bien y estoy recibiendo publicaciones de él, pero cuando intento iterarlo usando el mapa, aparece el error Server Error TypeError: Cannot read properties of undefined (reading 'map') , estoy usando NextJS para mi front-end.

Código

 const Blogs = ({ blogs }) => { return ( <div className='all-blogs'> {blogs.map((blog) => ( <div className='single-blog' key={blog._id}> <h1>{blog.title}</h1> <p>{blog.text}</p> </div> ))} </div> ) } export async function getStaticProps() { const res = await fetch( 'https://ed-blog-api.herokuapp.com/api/posts' ) const blogs = await res.json() return { props: { blogs, }, } }

punto final que estoy obteniendo: https://ed-blog-api.herokuapp.com/api/posts

[ Resultado de obtención de API a la derecha][1]

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

El problema aquí es que blogs , como valor de utilería, no está definido hasta que la lógica asincrónica lo define y lo completa. Puedes manejar esto de un par de maneras.

  1. Proporcione un valor prop predeterminado.

     const Blogs = ({ blogs = [] }) => { return ( <div className='all-blogs'> {blogs.map((blog) => ( <div className='single-blog' key={blog._id}> <h1>{blog.title}</h1> <p>{blog.text}</p> </div> ))} </div> ) }
  2. Proporcione un valor alternativo desde el que mapear.

     const Blogs = ({ blogs }) => { return ( <div className='all-blogs'> {(blogs ?? []).map((blog) => ( <div className='single-blog' key={blog._id}> <h1>{blog.title}</h1> <p>{blog.text}</p> </div> ))} </div> ) }

Tenga en cuenta que en el caso de que las solicitudes GET fallen (es decir, la fetch devuelve una Promesa rechazada) o se lanza cualquier otra excepción durante el procesamiento de la solicitud/respuesta, querrá proteger esto usando un try/catch . Proporcione valores prop definidos y válidos para la página, o devuelva que se produjo un error o que no se pudo encontrar el contenido de la página.

 export async function getStaticProps() { let blogs = []; try { const res = await fetch('https://ed-blog-api.herokuapp.com/api/posts'); blogs = await res.json(); } catch(error) { // handle error, logging, etc... // maybe optionally returning `notFound: true` as a 404 } return { props: { blogs, }, } }
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