debugging - extension - Chrome: Untaught SyntaxError: Fin de entrada inesperado
debug chrome extension (12)
Al cargar mi página en Google Chrome, aparece un error impreciso en la consola:
Untaught SyntaxError: final de entrada inesperado
No tengo idea de qué lo está causando. ¿Cómo voy a depurar este error?
Como se trata de una operación de onreadystatechange
el onreadystatechange
puede ocurrir antes de que el valor se cargue en el texto de respuesta, intente usar window.setTimeout(function () { JSON.parse(xhr.responseText); }, 1000);
para ver si el error persiste? BOL
Definitivamente habrá un corchete abierto que causó el error.
Le sugiero que abra la página en Firefox, luego abra Firebug y revise la consola, se mostrará el símbolo que falta.
Captura de pantalla de ejemplo:
El problema para mí fue que estaba haciendo $ .ajax con dataType: "json"
para una solicitud POST que devolvía un HTTP 201 (creado) y sin cuerpo de solicitud. La solución fue simplemente eliminar esa clave / valor.
Este error en particular es un hecho molesto sobre V8. En la mayoría de los casos, su JavaScript está roto de alguna manera. Por ejemplo, falta un }
o algo así.
Ejemplo dado, esto arrojará "Fin de entrada inesperado" también:
eval(''[{"test": 4}'') // notice the missing ]
Pero la causa raíz de los problemas parece ser que la URL JSON solicitada tiene un tipo de contenido de text/html
que aparentemente Chrome intenta analizar como HTML, lo que luego da como resultado el final inesperado de la entrada debido al hecho de que la imagen incluida las etiquetas están siendo analizadas
Intente configurar Content-Type a text/plain
Creo que debería solucionar los problemas.
No obstante, V8 podría hacer un mejor trabajo al decirle a uno exactamente dónde terminó la entrada inesperadamente.
Me enfrenté a un problema similar al usar la directiva ui bootstrap para angularjs - uib-datepicker, al presionar am / pm alternar.
Error en el controlador de eventos para (desconocido): SyntaxError: final inesperado de la entrada JSON angular timepicker
Resultó que fue por el plugin ''Trans-over'' (que traduce una palabra cuando se hace clic). Quizás mi respuesta ayudará a alguien, porque no encontré nada en Internet.
Mi problema fue con la memoria caché de Google Chrome. Probé esto al ejecutar mi aplicación web en Firefox y no obtuve ese error allí. Entonces, decidí intentar vaciar el caché de Google Chrome y funcionó.
Otra causa de este error: si su API responde intencionalmente sin cuerpo de respuesta, pero responde con un código de estado 200 OK
lugar de un código de estado 204 No Content
. Es posible que algunas bibliotecas de JavaScript no respondan bien a los tipos de contenido inesperados cuando no hay contenido, ¡así que use el código de estado correcto!
Para el registro, para cualquiera que intente encontrar las diversas causas de este error. Un atributo vacío de datos HTML5
data-mydata = ''''
causa el error también Debería verificar cuándo el valor de los datos es una cadena nula y no incluir el atributo en absoluto. No hace falta decir que esto es muy relevante para el script generado HTML.
Prueba Firebug para Mozilla: mostrará la posición de la falta }
.
Recibo este error cuando he omitido un carácter de corchete de cierre ( }
) en el código JavaScript. Verifique que sus llaves estén bien equilibradas.
Ver mi caso en otra pregunta similar :
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("");
JSHint es bueno para encontrar la ubicación de los paréntesis faltantes o mala sintaxis.