chrome · JavaScript
Die Meldung
TypeError: items.map is not a function
Was es bedeutet
Der Name existiert, ist aber keine Funktion — gäbe es ihn gar nicht, spräche die Meldung von undefined. Typische Ursachen: etwas, das Sie für ein Array hielten, ist tatsächlich ein Objekt oder eine NodeList; eine API liefert {data: [...]} statt des Arrays; oder der Default-Export eines Moduls hat eine andere Form. Geben Sie es aus, bevor Sie rätseln: ein console.log(typeof items, items) klärt die Hälfte dieser Fälle sofort. Eine NodeList oder ein Set braucht nur Array.from(items); war es aber {data: [...]}, ist Einwickeln falsch und items = res.data die Lösung.
Die Lösung
Hier hilft kein Einzeiler. Die Erklärung sagt, worauf zu schauen ist.
- Ausgegeben von
- chrome
- JavaScript
- 15
Browser- und Node-Fehler nennen meist, was kaputtging, aber nicht, warum der Wert so wurde — Sie haben undefined gelesen, es war keine Funktion, es war kein JSON — die Stelle zum Reparieren liegt also stromaufwärts der werfenden Zeile, und nur diese Zeile mit ?. und Standardwerten stillzulegen lässt dasselbe Problem weiter entfernt und in schwerer erkennbarer Gestalt wiederkehren.
Eine Fehlermeldung lesen
- Von der ersten Zeile abwärts lesen. Weiter unten geht es um das Innere des Werkzeugs; die Ursache steht meist oben.
- Gibt es Datei und Zeilennummer, dort anfangen — nicht der oberste Stack-Frame, sondern die oberste Zeile, die eine eigene Datei nennt.
- Die Meldung wörtlich suchen, vorher aber eigene Pfade und Variablennamen entfernen; genau die verhindern den Treffer.
- Dieselbe Lage wird je Werkzeugversion anders formuliert. Passen die Treffer nicht, die Versionsnummer mit in die Suche.
- Vor dem Einfügen einer Lösung prüfen, was sie verwirft. Manches davon lässt sich nicht zurückholen.
Häufige Fragen
Q. Was bedeutet „TypeError: items.map is not a function“?
Der Name existiert, ist aber keine Funktion — gäbe es ihn gar nicht, spräche die Meldung von undefined. Typische Ursachen: etwas, das Sie für ein Array hielten, ist tatsächlich ein Objekt oder eine NodeList; eine API liefert {data: [...]} statt des Arrays; oder der Default-Export eines Moduls hat eine andere Form. Geben Sie es aus, bevor Sie rätseln: ein console.log(typeof items, items) klärt die Hälfte dieser Fälle sofort. Eine NodeList oder ein Set braucht nur Array.from(items); war es aber {data: [...]}, ist Einwickeln falsch und items = res.data die Lösung.
Q. Wie behebe ich das?
Es gibt keinen Einzeiler. Die Erklärung oben sagt, worauf zu schauen ist.
Q. Welches Werkzeug gibt das aus?
chrome. Es gehört zu JavaScript, und die Meldung hat 6 Wörter.