Erreur JavaScript (Uncaught SyntaxError: fin d'entrée inattendue)


211

J'ai du code JavaScript qui fonctionne dans FireFox mais pas dans Chrome ou IE.

Dans la console Chrome JS, j'obtiens l'erreur suivante:

"SyntaxError non intercepté: fin d'entrée inattendue".

Le code JavaScript que j'utilise est:

<script>
 $(function() {
 $("#mewlyDiagnosed").hover(function() {
    $("#mewlyDiagnosed").animate({'height': '237px', 'top': "-75px"});
 }, function() {
    $("#mewlyDiagnosed").animate({'height': '162px', 'top': "0px"});
 });
</script>

Il dit que l'erreur est sur la dernière ligne qui est });


2
Je sais que le V8 de Chrome, pour un DELETEsur le serveur si la réponse était un 200 successau lieu d'un 204 success - no response , j'obtiendrais également cette erreur. Attention juste au cas où quelqu'un obtiendrait cela aussi.
Eric D. Johnson du

Réponses:


402

Ajoutez une seconde });.

Lorsqu'il est correctement en retrait, votre code lit

$(function() {
    $("#mewlyDiagnosed").hover(function() {
        $("#mewlyDiagnosed").animate({'height': '237px', 'top': "-75px"});
    }, function() {
        $("#mewlyDiagnosed").animate({'height': '162px', 'top': "0px"});
    });
MISSING!

Vous n'avez jamais fermé l'extérieur $(function() {.


278
La leçon est, indentez toujours votre code (et indentez-le correctement).
SLaks

4
Oh mec, je souhaite que mon VIM ait détecté cette erreur de syntaxe. Je ne peux pas croire combien de temps je finis par perdre parfois avec des erreurs de syntaxe imprudentes.
HeyWatchThis

4
La leçon est, utilisez toujours un bon éditeur avec de bons plugins, qui peuvent détecter l'appariement des parenthèses, le mettre en évidence ou même réparer les problèmes.
Sławomir Lenart

1
@HeyWatchThis Vous pouvez essayer Syntastic pour Vim.
Nathan Long

1
J'utilise neomake pour vim / neovim, configuré pour exécuter jshint chaque fois que j'enregistre un fichier JavaScript. Si j'ai des erreurs de syntaxe, je verrai des symboles d'avertissement / d'erreur dans la gouttière de vim / neovim. Lorsque je place mon curseur sur cette ligne, la ligne de commande vim / neovim affiche un message indiquant l'erreur.
trusktr

89

Dans mon cas, j'essayais d'analyser un JSON vide:

JSON.parse(stringifiedJSON);

En d'autres termes, ce qui s'est passé est le suivant:

JSON.parse("");

3
Malheureusement, cela inclut $.parseJSONjquery 1.11.2
Nasser Al-Wohaibi

37

http://jsbeautifier.org/ est utile pour mettre en retrait votre code JS minifié.

De plus, avec Google Chrome, vous pouvez utiliser "jolie impression". Voir l'exemple de capture d'écran ci-dessous montrant à jquery.min.jspartir de Stack Overflow bien en retrait à partir de mon navigateur :)

entrez la description de l'image ici


14

En formatant un peu votre code, vous venez de fermer la fonction de survol interne. Vous n'avez pas fermé les parties extérieures, marquées ci-dessous:

$(// missing closing)
 function() { // missing closing }
     $("#mewlyDiagnosed").hover(
        function() {
            $("#mewlyDiagnosed").animate({'height': '237px', 'top': "-75px"});
        }, 
        function() {
            $("#mewlyDiagnosed").animate({'height': '162px', 'top': "0px"});
        });

5

Dans mon cas, cela a fini par être un simple problème de guillemet double dans mon bookmarklet , n'oubliez pas d'utiliser uniquement des guillemets simples sur les bookmarklets. Juste au cas où cela aiderait quelqu'un.


3

J'ai eu cette erreur lorsque j'essayais d'écrire un bookmarklet javascript. Je ne pouvais pas comprendre ce qui en était la cause. Mais j'ai finalement essayé d'URL encoder le bookmarklet, via le site Web suivant: http://mrcoles.com/bookmarklet/ , puis l'erreur s'est dissipée, il a donc dû y avoir un problème avec certains caractères dans le code javascript interprétés comme URL spéciale contrôler les caractères.


2
J'avais un // commentaire dans mon js, qui commentait un peu plus que je ne le souhaitais depuis le coller dans l'url du bookmarklet a fait le code entier une ligne et le // était au milieu du code.
mflodin

La suppression des commentaires l'a également corrigé.
Alex

3

Cette erreur est principalement causée par des appels ajax retournés vides, lors de la tentative d'analyse d'un JSON vide.

Pour résoudre ce test si les données retournées sont vides

$.ajax({
    url: url,
    type: "get",
    dataType: "json",
    success: function (response) {

        if(response.data.length == 0){
            // EMPTY
        }else{
            var obj =jQuery.parseJSON(response.data);
            console.log(obj);
        }
    }
});

3

Dans mon cas, il a été causé par un manque (0)dans javascript:void(0)dans un point d' ancrage.


0

Je l'ai obtenu car j'avais un commentaire dans un fichier que j'ajoutais à mon JS, raison vraiment gênante de ce qui se passait - bien qu'en cliquant sur le VMfichier qui est pré-rendu et qui capture l'erreur, vous découvrirez ce que erreur était, dans mon cas, il s'agissait simplement de décommenter du code que j'utilisais.


0

J'ai également eu cette erreur pointant vers la fin du dernier bloc de script sur une page, seulement pour réaliser que l'erreur provenait en fait d'un clic sur un élément avec un onclick="pagename"au lieu de onclick="window.location='pagename'". Ce n'est pas toujours un support manquant!

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.