Error de JavaScript (Error de sintaxis no capturado: final de entrada inesperado)

211

Tengo un código JavaScript que funciona en Firefox pero no en Chrome o IE.

En la consola Chrome JS aparece el siguiente error:

"Error de sintaxis no capturado: final de entrada inesperado".

El código JavaScript que estoy usando es:

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

Dice que el error está en la última línea que es });

Phillip
fuente
2
Sé que el V8 de Chrome, para un DELETEen el servidor si la respuesta fuera 200 en successlugar de 204 success - no response , también obtendría este error. Solo dirígete en caso de que alguien también esté entendiendo esto.
Eric D. Johnson

Respuestas:

402

Agrega un segundo });.

Cuando se sangra correctamente, su código lee

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

Nunca cerraste lo externo $(function() {.

SLaks
fuente
278
La lección es, siempre sangrar su código (y sangrarlo correctamente).
SLaks
44
Oh hombre, desearía que mi VIM hubiera captado ese error de sintaxis. No puedo creer cuánto tiempo termino perdiendo a veces con errores de sintaxis descuidados.
HeyWatchThis
44
La lección es, siempre use un buen editor con buenos complementos, que puede detectar el emparejamiento de paréntesis, resaltarlo o incluso reparar problemas.
Sławomir Lenart
1
@HeyWatchThis Puedes probar Syntastic para Vim.
Nathan Long
1
Uso neomake para vim / neovim, configurado para ejecutar jshint cada vez que guardo un archivo JavaScript. Si tengo errores de sintaxis, veré símbolos de advertencia / error en la canaleta de vim / neovim. Cuando coloco mi cursor en esa línea, la línea de comando vim / neovim mostrará un mensaje que dice cuál es el error.
trusktr
89

En mi caso, estaba tratando de analizar un JSON vacío:

JSON.parse(stringifiedJSON);

En otras palabras, lo que sucedió fue lo siguiente:

JSON.parse("");
falsarella
fuente
3
Esto, desafortunadamente, incluye $.parseJSONjquery 1.11.2
Nasser Al-Wohaibi
37

http://jsbeautifier.org/ es útil para sangrar su código JS minimizado.

Además, con Google Chrome puede usar "impresión bonita". Vea la siguiente captura de pantalla de ejemplo que se muestra jquery.min.jsdesde Stack Overflow bien sangrado desde mi navegador :)

ingrese la descripción de la imagen aquí

Hugo
fuente
14

Formateando un poco su código, solo ha cerrado la función de desplazamiento interno. No ha cerrado las partes externas, marcadas a continuación:

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

En mi caso, terminó siendo un simple problema de comillas dobles en mi bookmarklet , recuerde usar solo comillas simples en bookmarklets. Por si acaso esto ayuda a alguien.

Yëco
fuente
3

Recibí este error cuando intentaba escribir un marcador de JavaScript. No pude entender qué lo estaba causando. Pero finalmente probé la codificación de URL del bookmarklet, a través del siguiente sitio web: http://mrcoles.com/bookmarklet/ y luego el error desapareció, por lo que debe haber sido un problema con ciertos caracteres en el código de JavaScript que se interpretan como URL especial personajes de control

usuario280109
fuente
2
Tenía un // comentario en mi js, que comentaba un poco más de lo que quería, ya que pegarlo en la url del bookmarklet convirtió todo el código en una línea y el // estaba en el medio del código.
mflodin
Eliminar comentarios también me lo arregló.
Alex
3

Este error se debe principalmente a llamadas ajax devueltas vacías, cuando se intenta analizar un JSON vacío.

Para resolver esta prueba si los datos devueltos están vacíos

$.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);
        }
    }
});
Jimmy Obonyo Abor
fuente
3

En mi caso, fue causada por una falta (0)de javascript:void(0)de un ancla.

Sam
fuente
0

Obtuve esto porque tenía un comentario en un archivo que estaba agregando a mi JS, una razón realmente incómoda de lo que estaba sucediendo, aunque al hacer clic en el VMarchivo que está pre-procesado y detecta el error, descubrirá exactamente qué El error fue, en mi caso, fue simplemente descomentar algún código que estaba usando.

Jack Hales
fuente
0

También recibí este error apuntando al final del último bloque de script en una página, solo para darme cuenta de que el error fue realmente al hacer clic en un elemento con un en onclick="pagename"lugar de onclick="window.location='pagename'". ¡No siempre falta un soporte!

justanotherguy
fuente