Podczas ładowania mojej strony w Google Chrome pojawia się niejasny błąd w konsoli:
Uncaught SyntaxError: Nieoczekiwany koniec danych wejściowych
Nie mam pojęcia, co to powoduje. Jak mam się zabrać do debugowania tego błędu?
debugging
google-chrome
syntax-error
dlaurent86
źródło
źródło
Content-length
nagłówek określa więcej bajtów niż zawiera odpowiedź, a może serwer w jakiś sposób wysyła nieprawidłowy kod HTML.<script>https://example.com/a.js</script>
powinno być<script src="https://example.com/a.js"></script>
Odpowiedzi:
Ten konkretny błąd jest irytującym faktem v8. W większości przypadków twój JavaScript jest w jakiś sposób uszkodzony. Na przykład brakuje
}
lub coś takiego.Podany przykład, spowoduje to również „nieoczekiwany koniec danych wejściowych”:
Ale główną przyczyną problemów wydaje się być to, że żądany adres URL JSON ma typ zawartości,
text/html
którego Chrome najwyraźniej próbuje przeanalizować jako HTML, co następnie skutkuje nieoczekiwanym zakończeniem wprowadzania danych, ponieważ dołączone tagi obrazu są przeanalizowane.Spróbuj ustawić typ zawartości na
text/plain
myślę, że to powinno rozwiązać problemy.Niemniej jednak V8 może zrobić lepszą robotę, mówiąc dokładnie, gdzie dane wejściowe zakończyły się nieoczekiwanie.
źródło
Wypróbuj Firebug dla Mozilli - pokaże pozycję brakującego pliku
}
.http://getfirebug.com/
źródło
ctrl+shift+i
powie ci.Zobacz moją sprawę na innym podobnym pytaniu :
źródło
Ten błąd pojawia się, gdy pominęłam znak nawiasu zamykającego (
}
) w kodzie JavaScript. Sprawdź, czy Twoje szelki są odpowiednio wyważone.źródło
Dla przypomnienia, dla każdego, kto próbuje znaleźć różne przyczyny tego błędu. Pusty atrybut danych HTML5
powoduje również błąd. Należy sprawdzić, czy wartość danych jest ciągiem pustym i nie należy w ogóle uwzględniać atrybutu. Jest to oczywiste, że dotyczy to głównie kodu HTML generowanego przez skrypty.
źródło
data-setup='{"example_option":true}'
wszystko działało świetnie.Problem polegał na tym, że robiłem $ .ajax z
dataType: "json"
żądaniem POST, które zwracało HTTP 201 (utworzone) i nie było treści żądania. Rozwiązaniem było po prostu usunięcie tego klucza / wartości.źródło
JSHint jest dobry w znajdowaniu lokalizacji brakujących nawiasów lub złej składni.
źródło
Inna przyczyna tego błędu: jeśli Twój interfejs API celowo odpowiada bez treści odpowiedzi, ale odpowiada
200 OK
kodem stanu zamiast204 No Content
kodu stanu. Niektóre biblioteki JavaScript mogą nie reagować dobrze na nieoczekiwane typy zawartości, gdy nie ma zawartości, więc użyj poprawnego kodu stanu!źródło
Na pewno pojawi się otwarty nawias, który spowodował błąd.
Proponuję otworzyć stronę w przeglądarce Firefox, a następnie otworzyć Firebug i sprawdzić konsolę - pokaże brakujący symbol.
Przykładowy zrzut ekranu:
źródło
Mój problem dotyczył pamięci podręcznej Google Chrome. Przetestowałem to, uruchamiając moją aplikację internetową w przeglądarce Firefox i nie mam tam tego błędu. Więc wtedy zdecydowałem spróbować opróżnić pamięć podręczną Google Chrome i zadziałało.
źródło
W przypadkach, gdy kod JavaScript jest zminimalizowany do jednej linii, inną przyczyną tego błędu jest użycie
//
zamiast/**/
komentarzy.Źle (komentuje wszystko po
//
dołączeniu zamknięcia}
funkcji)Dobrze (ogranicza Twój komentarz)
źródło
W moim przypadku dynamicznie dodawałem javascript i użyłem podwójnych cudzysłowów 2 razy w szablonach ciągów, więc zmieniłem drugi na apostrofy i błąd zniknął. Mam nadzieję, że pomoże to niektórym osobom przyjeżdżającym tutaj z tego samego powodu.
źródło
Podobny problem napotkałem przy użyciu dyrektywy ui bootstrap dla angularjs - uib-datepicker, po naciśnięciu przełącznika am / pm.
Okazało się, że było to spowodowane wtyczką „Trans-over” (która tłumaczy słowo po kliknięciu). Może moja odpowiedź komuś pomoże, bo w internecie nic nie znalazłem.
źródło
Ponieważ jest to operacja asynchroniczna,
onreadystatechange
może się zdarzyć, zanim wartość zostanie załadowana w responseText, spróbuj użyć a,window.setTimeout(function () { JSON.parse(xhr.responseText); }, 1000);
aby sprawdzić, czy błąd nadal występuje? BOLźródło
Miałem ten błąd i naprawiłem go, dodając strażnika
readyState
istatus
pokazany tutaj:źródło
jeśli wystąpił błąd w tagu kotwicy, zamień „Onclick” na „href” lub „href” na „Onclick”
źródło
Ustawienie
Accept
nagłówkaapplication/json
w żądaniu zadziałało, gdy napotkałem ten sam problem.źródło
Próba przeanalizowania pustego kodu JSON może być przyczyną tego błędu.
Kiedy otrzymasz odpowiedź z serwera lub czegokolwiek, najpierw sprawdź, czy nie jest pusta. Na przykład:
Następnie możesz pobrać za pomocą:
źródło