Lors du chargement de ma page dans Google Chrome, j'obtiens une vague erreur dans la console:
Uncaught SyntaxError: fin inattendue de l'entrée
Je n'ai aucune idée de ce qui en est la cause. Comment procéder pour déboguer cette erreur?
debugging
google-chrome
syntax-error
dlaurent86
la source
la source
Content-length
tête spécifie plus d'octets que la réponse contient, ou peut-être que le serveur envoie en quelque sorte du HTML invalide.<script>https://example.com/a.js</script>
et il aurait dû être<script src="https://example.com/a.js"></script>
Réponses:
Cette erreur particulière est un fait ennuyeux sur v8. Dans la plupart des cas, votre JavaScript est cassé d'une manière ou d'une autre. Par exemple, il manque un
}
ou quelque chose comme ça.Exemple donné, cela produira également "Fin de saisie inattendue":
Mais la cause profonde des problèmes semble être que l'URL JSON demandé a un type de contenu de
text/html
laquelle Chrome tente apparemment d'analyser comme HTML, qui ensuite les résultats à la fin inattendue de l' entrée en raison du fait que les balises d'image inclus sont en cours analysé.Essayez de définir Content-Type sur
text/plain
Je pense que cela devrait résoudre les problèmes.Néanmoins, V8 pourrait faire un meilleur travail en indiquant exactement où l'entrée s'est terminée de manière inattendue.
la source
Essayez Firebug pour Mozilla - il affichera la position des disparus
}
.http://getfirebug.com/
la source
ctrl+shift+i
vous le dira.Voir mon cas sur une autre question similaire :
la source
J'obtiens cette erreur lorsque j'ai omis un caractère d'accolade fermant (
}
) dans le code JavaScript. Vérifiez que vos accolades sont correctement équilibrées.la source
Pour mémoire, pour quiconque essaie de trouver les différentes causes de cette erreur. Un attribut de données HTML5 vide
provoque également l'erreur. Vous devez vérifier si la valeur des données est une chaîne nulle et ne pas inclure du tout l'attribut. Il va sans dire que cela est largement pertinent pour le HTML généré par script.
la source
data-setup='{"example_option":true}'
tout fonctionnait très bien.Le problème pour moi était que je faisais $ .ajax avec
dataType: "json"
pour une requête POST qui renvoyait un HTTP 201 (créé) et aucun corps de requête. Le correctif consistait simplement à supprimer cette clé / valeur.la source
JSHint est bon pour trouver l'emplacement des crochets manquants ou une mauvaise syntaxe.
la source
Une autre cause de cette erreur: si votre API répond intentionnellement sans corps de réponse, mais répond avec un
200 OK
code d'état au lieu d'un204 No Content
code d'état. Certaines bibliothèques JavaScript peuvent ne pas bien répondre aux types de contenu inattendus en l'absence de contenu, utilisez donc le code d'état correct!la source
Il y aura certainement un crochet ouvert qui a causé l'erreur.
Je vous suggère d'ouvrir la page dans Firefox, puis d'ouvrir Firebug et de vérifier la console - elle affichera le symbole manquant.
Exemple de capture d'écran:
la source
Mon problème était avec le cache de Google Chrome. J'ai testé cela en exécutant mon application Web sur Firefox et je n'ai pas eu cette erreur là-bas. Alors j'ai décidé d'essayer de vider le cache de Google Chrome et cela a fonctionné.
la source
Dans les cas où votre code JavaScript est réduit à une seule ligne, une autre cause de cette erreur est d'utiliser
//
au lieu de/**/
pour vos commentaires.Mauvais (commente tout après avoir
//
inclus la clôture}
de votre fonction)Bien (limite votre commentaire)
la source
Dans mon cas, j'ajoutais du javascript de manière dynamique et en utilisant des guillemets doubles 2 fois dans des modèles de chaîne, j'ai donc changé la seconde en guillemets simples et l'erreur a disparu. J'espère que cela aidera certaines des personnes qui viennent ici pour la même raison.
la source
J'ai rencontré un problème similaire en utilisant la directive bootstrap de l'interface utilisateur pour angularjs - uib-datepicker, en appuyant sur le bouton am / pm.
Il s'est avéré que c'était à cause du plugin 'Trans-over' (qui traduit un mot quand on clique dessus). Peut-être que ma réponse aidera quelqu'un, car je n'ai rien trouvé sur Internet.
la source
Comme il s'agit d'une opération asynchrone,
onreadystatechange
cela peut se produire avant que la valeur ne soit chargée dans le responseText, essayez d'utiliser awindow.setTimeout(function () { JSON.parse(xhr.responseText); }, 1000);
pour voir si l'erreur persiste? BOLla source
J'ai eu cette erreur et je l'ai corrigée en ajoutant la garde
readyState
etstatus
montrée ici:la source
si vous avez une erreur au tag Anchor, remplacez simplement «Onclick» par «href» ou «href» par «Onclick»
la source
Définir l'en-
Accept
têteapplication/json
dans la demande a fonctionné pour moi lorsque j'ai rencontré le même problème.la source
Essayer d'analyser un JSON vide peut être la cause de cette erreur.
Lorsque vous recevez une réponse du serveur ou autre, vérifiez d'abord si elle n'est pas vide. Par exemple:
Ensuite, vous pouvez récupérer avec:
la source
Dans mon cas, j'avais une faible vitesse Internet, lorsque je désactive la connexion Internet de l'autre utilisateur, l'erreur a disparu, étrange
la source