Comment résoudre l'erreur SyntaxError: Unexpected token < in JSON at position 0

SyntaxError: Unexpected token < in JSON at position 0 indique que la requête HTTP attendait une réponse en format JSON, mais a reçu des données autres qu'en format JSON à la place.

Si vous avez accès au code accès au code qui envoie la requête, déboguez-le en ajoutant une logique de gestion des erreurs qui affiche l'erreur et les données de réponse dans la console. La manière d'afficher l'erreur dépend de si le code JavaScript utilise fetch() ou JSON.parse().


Cet article présente des conseils pour la résolution de l'erreur SyntaxError: Unexpected token < in JSON at position 0 et des variantes les plus fréquentes :

Quelle est la cause de cette erreur?

Cette erreur se produit lorsqu'une requête attend une réponse JSON, mais que la réponse est reçue dans un format différent. L'analyseur syntaxique JSON génère une erreur lorsqu'il détecte une réponse non valide.

Les causes possibles à l'origine de cette erreur comprennent celles qui suivent :

Dans de nombreux cas, la réponse inattendue est au format HTML ou XML et contient les détails d'une erreur côté serveur.

Comment puis-je la résoudre?

Ajoutez un code de gestion des erreurs et affichez les données d'erreur et de réponse dans la console afin de déterminer pourquoi vous n'avez pas reçu de format JSON valide. La façon dont les données sont affichées dépend de si le code utilise fetch() ou JSON.parse().

Voici les causes les plus courantes et leurs solutions :

Afficher les données de réponse d'une requête fetch()

Une fonction JavaScript fetch() peut ressembler à ce qui suit :

Bloc de code JavaScript montrant une requête d'API Fetch sur un exemple d'URL, une promesse qui renvoie le format JSON de la réponse et une promesse qui traite les données d'une certaine manière. fetch('https://example.com/some/path/to/json') .then(response => response.json()) .then(data => console.log(data))

L'erreur se produit lorsque response.json() est appelé et que les données ne peuvent pas être analysées en format JSON. Par exemple, la réponse peut être au format HTML ou XML.

Affichez les données sur la console en créant une gestion de la réponse et en ajoutant une fonction pour gérer l'erreur :

Bloc de code JavaScript avec numéros de ligne montrant une requête d'API Fetch sur un exemple d'URL, une promesse qui clone la réponse et renvoie son format JSON, et une promesse qui traite les données d'une certaine manière et affiche les erreurs. Ligne 1 : let responseClone; Ligne 2 : fetch('https://example.com/some/path/to/json') Ligne 3 : .then(response => { Line 4: responseClone = response.clone(); Line 5: return response.json(); Line 6: }) Ligne 7 : .then(data => console.log(data)) Ligne 8 : .catch(error => { Line 9: console.log('Error parsing JSON from response:', error, responseClone); Line 10: responseClone.text() Line 11: .then(text => console.log('Received the following instead of valid JSON: ', text)) Line 12: }

Un objet response ne peut être lu qu'une seule fois. Par conséquent, il faut le cloner pour l'afficher sur la console avant que la réponse d'origine soit lue à la ligne 5.

À la ligne 8, nous avons ajouté une fonction de gestion des erreurs. Si response.json() échoue, la fonction est appelée, et l'erreur et les données responseClone sont affichées dans la console à des fins de vérification.

Afficher les données de réponse d'une requête JSON.parse()

Si le code utilise JSON.parse(data), affichez les données de réponse dans la console en ajoutant une instruction try…catch pour gérer l'erreur :

Bloc de code JavaScript montrant une instruction try-catch. Le bloc try invoque JSON.parse(data) et le bloc catch affiche l'erreur dans la console. try { JSON.parse(data); } catch (error) { console.log('Error parsing JSON:', error, data); }