Start·Fehlermeldungen

chrome 111+ · JavaScript

Die Meldung

SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON

Was es bedeutet

Was Sie JSON.parse übergeben haben, war HTML und kein JSON. Das in der Meldung zitierte <!DOCTYPE ist der Beweis: der Server hat mit einer HTML-Seite geantwortet — einem 404, einem 502 oder einer Login-Weiterleitung — der echte Fehler liegt also vor dem Parsen, in der Anfrage. Typisch sind die falsche URL, ein Dev-Server-Proxy, der index.html statt der API ausgeliefert hat, oder eine abgelaufene Sitzung mit Weiterleitung zur Anmeldeseite. Prüfen Sie res.ok, bevor Sie res.json() aufrufen, und lesen Sie res.text(), um zu sehen, was wirklich ankam; die URL mit curl -s aufzurufen ist der schnellste Blick. Vor Chrome 111 und Node 20 lautete derselbe Fehler Unexpected token < in JSON at position 0.

Die Lösung

curl -s https://api.example.com/data | head -5
Ausgegeben von
chrome 111+
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 „SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON“?

Was Sie JSON.parse übergeben haben, war HTML und kein JSON. Das in der Meldung zitierte <!DOCTYPE ist der Beweis: der Server hat mit einer HTML-Seite geantwortet — einem 404, einem 502 oder einer Login-Weiterleitung — der echte Fehler liegt also vor dem Parsen, in der Anfrage. Typisch sind die falsche URL, ein Dev-Server-Proxy, der index.html statt der API ausgeliefert hat, oder eine abgelaufene Sitzung mit Weiterleitung zur Anmeldeseite. Prüfen Sie res.ok, bevor Sie res.json() aufrufen, und lesen Sie res.text(), um zu sehen, was wirklich ankam; die URL mit curl -s aufzurufen ist der schnellste Blick. Vor Chrome 111 und Node 20 lautete derselbe Fehler Unexpected token < in JSON at position 0.

Q. Wie behebe ich das?

curl -s https://api.example.com/data | head -5 — vor dem Ausführen oben prüfen, was dieser Befehl verwirft.

Q. Welches Werkzeug gibt das aus?

chrome 111+. Es gehört zu JavaScript, und die Meldung hat 10 Wörter.

Verwandte Fehler