Accueil·Messages d’erreur

chrome 111+ · JavaScript

Le message

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

Ce que cela veut dire

Ce que vous avez donné à JSON.parse était du HTML, pas du JSON. Le fragment <!DOCTYPE cité dans le message en est la preuve : le serveur a répondu par une page HTML — un 404, un 502 ou une redirection de connexion — donc le vrai bogue est en amont de l'analyse, dans la requête. Causes typiques : la mauvaise URL, un proxy de serveur de développement qui a servi index.html au lieu de l'API, ou une session expirée redirigée vers la page de connexion. Vérifiez res.ok avant d'appeler res.json(), et lisez res.text() pour voir ce qui est réellement arrivé ; appeler l'URL avec curl -s est le regard le plus rapide. Avant Chrome 111 et Node 20, la même erreur s'écrivait Unexpected token < in JSON at position 0.

Le correctif

curl -s https://api.example.com/data | head -5
Émis par
chrome 111+
JavaScript
15

Les erreurs du navigateur et de Node disent d'ordinaire ce qui a cassé et non pourquoi la valeur est devenue telle — vous avez lu undefined, ce n'était pas une fonction, ce n'était pas du JSON — l'endroit à corriger se trouve donc en amont de la ligne qui a levé l'erreur, et faire taire cette seule ligne avec ?. et des valeurs par défaut fait revenir le même problème plus loin, sous une forme plus difficile à reconnaître.

Lire un message d’erreur

  • Lisez à partir de la première ligne. Plus on descend, plus il s’agit des entrailles de l’outil ; la cause est généralement en haut.
  • S’il y a un fichier et un numéro de ligne, commencez là — pas la première image de la pile, mais la ligne la plus haute qui nomme un fichier de vous.
  • Cherchez le message tel quel, mais retirez d’abord vos chemins et vos noms de variables : c’est cela qui empêche la correspondance.
  • La même situation se formule autrement selon la version de l’outil. Si les résultats sonnent faux, ajoutez le numéro de version.
  • Avant de coller un correctif, vérifiez ce qu’il jette. Certains sont irréversibles.

Questions fréquentes

Q. Que veut dire « SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON » ?

Ce que vous avez donné à JSON.parse était du HTML, pas du JSON. Le fragment <!DOCTYPE cité dans le message en est la preuve : le serveur a répondu par une page HTML — un 404, un 502 ou une redirection de connexion — donc le vrai bogue est en amont de l'analyse, dans la requête. Causes typiques : la mauvaise URL, un proxy de serveur de développement qui a servi index.html au lieu de l'API, ou une session expirée redirigée vers la page de connexion. Vérifiez res.ok avant d'appeler res.json(), et lisez res.text() pour voir ce qui est réellement arrivé ; appeler l'URL avec curl -s est le regard le plus rapide. Avant Chrome 111 et Node 20, la même erreur s'écrivait Unexpected token < in JSON at position 0.

Q. Comment le corriger ?

curl -s https://api.example.com/data | head -5 — avant de le lancer, vérifiez plus haut ce que cette commande jette.

Q. Quel outil émet cela ?

chrome 111+. Cela relève de JavaScript, et le message compte 10 mots.

Erreurs voisines