Inicio·Mensajes de error

chrome · JavaScript

El mensaje

TypeError: items.map is not a function

Qué significa

El nombre existe pero no es una función; si no existiera en absoluto, el mensaje hablaría de undefined. Las causas típicas son algo que tomaste por un array y en realidad es un objeto o un NodeList, una API que devuelve {data: [...]} en vez del array, o una exportación por defecto con otra forma. Imprímelo antes de teorizar: un solo console.log(typeof items, items) resuelve la mitad de estos casos al instante. Un NodeList o un Set solo necesitan Array.from(items); pero si era {data: [...]}, envolverlo está mal y lo correcto es items = res.data.

El arreglo

No hay un comando de una línea. La explicación dice qué revisar.

Lo imprime
chrome
JavaScript
15

Los errores del navegador y de Node suelen decirte qué se rompió y no por qué el valor llegó a ser así —leíste undefined, no era una función, no era JSON—, así que el lugar del arreglo está aguas arriba de la línea que lanzó el error, y silenciar solo esa línea con ?. y valores por defecto hace que el mismo problema reaparezca más lejos y con una forma más difícil de reconocer.

Cómo leer un mensaje de error

  • Lee desde la primera línea. Cuanto más abajo, más son las tripas de la herramienta; la causa suele estar arriba.
  • Si hay un archivo y un número de línea, empieza ahí: no el marco superior de la pila, sino la línea más alta que nombre un archivo tuyo.
  • Busca el mensaje literal, pero quita antes tus rutas y nombres de variables: eso es lo que impide que la búsqueda coincida.
  • La misma condición se redacta distinto según la versión. Si los resultados no cuadran, añade el número de versión.
  • Antes de pegar un arreglo, comprueba qué descarta. Algunos no se pueden deshacer.

Preguntas frecuentes

Q. ¿Qué significa «TypeError: items.map is not a function»?

El nombre existe pero no es una función; si no existiera en absoluto, el mensaje hablaría de undefined. Las causas típicas son algo que tomaste por un array y en realidad es un objeto o un NodeList, una API que devuelve {data: [...]} en vez del array, o una exportación por defecto con otra forma. Imprímelo antes de teorizar: un solo console.log(typeof items, items) resuelve la mitad de estos casos al instante. Un NodeList o un Set solo necesitan Array.from(items); pero si era {data: [...]}, envolverlo está mal y lo correcto es items = res.data.

Q. ¿Cómo se arregla?

No hay comando de una línea. La explicación de arriba dice qué revisar.

Q. ¿Qué herramienta lo imprime?

chrome. Está en JavaScript y el mensaje tiene 6 palabras.

Errores cercanos