Ao carregar minha página no Google Chrome, recebo um erro vago no console:
SyntaxError não capturado: final de entrada inesperado
Não tenho ideia do que está causando isso. Como eu iria depurar esse erro?
debugging
google-chrome
syntax-error
dlaurent86
fonte
fonte
Content-length
cabeçalho especifique mais bytes do que a resposta contém, ou talvez o servidor, de alguma forma, envie HTML inválido.<script>https://example.com/a.js</script>
e deveria ter sido #<script src="https://example.com/a.js"></script>
Respostas:
Esse erro em particular é um fato irritante sobre v8. Na maioria dos casos, seu JavaScript está quebrado de alguma forma. Por exemplo, faltando um
}
ou algo parecido.Exemplo dado, isso produzirá "Fim inesperado de entrada" também:
Mas a causa principal dos problemas parece ser que o URL JSON solicitado possui um Tipo de Conteúdo do
text/html
qual o Chrome aparentemente tenta analisar como HTML, o que resulta no final inesperado da entrada devido ao fato de as tags de imagem incluídas estarem sendo analisado.Tente definir o Tipo de conteúdo como
text/plain
Acho que deve corrigir os problemas.No entanto, o V8 poderia fazer um trabalho melhor sobre dizer exatamente onde a entrada terminou inesperadamente.
fonte
Experimente o Firebug for Mozilla - ele mostrará a posição dos desaparecidos
}
.http://getfirebug.com/
fonte
ctrl+shift+i
informará.Veja meu caso em outra pergunta semelhante :
fonte
Eu recebo esse erro quando omiti um caractere de chave de fechamento (
}
) no código JavaScript. Verifique se o seu aparelho está bem equilibrado.fonte
Para o registro, para quem tentar encontrar as várias causas desse erro. Um atributo de dados HTML5 vazio
causa o erro também. Você deve verificar quando o valor dos dados é uma sequência nula e não incluir o atributo. Escusado será dizer que isso é amplamente relevante para o HTML gerado por script.
fonte
data-setup='{"example_option":true}'
Tudo funcionou muito bem.O problema para mim era que eu estava fazendo $ .ajax com
dataType: "json"
uma solicitação POST que estava retornando um HTTP 201 (criado) e nenhum corpo de solicitação. A correção foi simplesmente remover essa chave / valor.fonte
JSHint é bom em encontrar a localização de colchetes ausentes ou sintaxe incorreta.
fonte
Outra causa desse erro: se sua API responder intencionalmente sem corpo de resposta, mas responder com um
200 OK
código de status em vez de um204 No Content
código de status. Algumas bibliotecas JavaScript podem não responder bem a tipos de conteúdo inesperados quando não há conteúdo; portanto, use o código de status correto!fonte
Definitivamente, haverá um suporte aberto que causou o erro.
Sugiro que você abra a página no Firefox, abra o Firebug e verifique o console - ele mostrará o símbolo ausente.
Exemplo de captura de tela:
fonte
Meu problema foi com o cache do Google Chrome. Eu testei isso executando meu aplicativo Web no Firefox e não recebi esse erro lá. Então eu decidi tentar esvaziar o cache do Google Chrome e funcionou.
fonte
Nos casos em que seu código JavaScript é minificado para uma única linha, outra causa desse erro é usar em
//
vez de/**/
nos seus comentários.Ruim (comenta tudo depois de
//
incluir o fechamento}
da sua função)Bom (restringe seu comentário)
fonte
No meu caso, eu estava adicionando javascript dinamicamente e usando aspas duplas 2 vezes em modelos de string, então mudei o segundo para aspas simples e o erro desapareceu. Espero que ajude algumas pessoas que vêm aqui pelo mesmo motivo.
fonte
Eu enfrentei um problema semelhante usando a diretiva de inicialização da interface do usuário para angularjs - uib-datepicker, ao pressionar am / pm toggle.
Acontece que foi por causa do plug - in 'Trans-over' (que traduz uma palavra quando é clicada). Talvez minha resposta ajude alguém, porque não encontrei nada na internet.
fonte
Como é uma operação assíncrona,
onreadystatechange
pode ocorrer antes que o valor seja carregado no responseText, tente usar awindow.setTimeout(function () { JSON.parse(xhr.responseText); }, 1000);
para verificar se o erro persiste. BOLfonte
Eu tive esse erro e o corrigi adicionando a proteção
readyState
estatus
mostrada aqui:fonte
se você encontrou um erro na tag Anchor, substitua "Onclick" por "href" ou "href" por "Onclick"
fonte
Definir o
Accept
cabeçalho comoapplication/json
na solicitação funcionou para mim quando enfrentei o mesmo problema.fonte
Tentar analisar um JSON vazio pode ser a causa desse erro.
Quando você receber uma resposta do servidor ou o que seja, verifique primeiro se não está vazio. Por exemplo:
Então você pode buscar com:
fonte