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

241
Vistas
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 Respuestas
Responde la pregunta

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 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