Chrome: Uncaught SyntaxError: Неожиданный конец ввода - PullRequest
164 голосов
/ 29 августа 2010

При загрузке моей страницы в Google Chrome я получаю неопределенную ошибку в консоли:

Uncaught SyntaxError: Неожиданный конец ввода

Понятия не имею, чтовызывает это.Как мне отладить эту ошибку?

Ответы [ 16 ]

216 голосов
/ 29 августа 2010

Эта конкретная ошибка - один раздражающий факт о .В большинстве случаев ваш JavaScript каким-то образом нарушен.Например, отсутствует } или что-то в этом роде.

В приведенном примере это также приведет к «Неожиданному концу ввода»:

eval('[{"test": 4}') // notice the missing ]

Но, похоже, первопричина проблемможет быть, что запрошенный URL JSON имеет Content-Type из text/html, который Chrome, очевидно, пытается проанализировать как HTML, что затем приводит к неожиданному завершению ввода из-за того, что включенные теги изображений используютсяparsed.

Попробуйте установить Content-Type на text/plain Я думаю, что это должно решить проблемы.

Тем не менее, V8 может лучше справиться с точным сообщением., где ввод неожиданно завершился.

71 голосов
/ 22 июля 2011

Попробуйте Firebug для Mozilla - он покажет положение пропавшего }.

http://getfirebug.com/

32 голосов
/ 30 мая 2015

См. мой случай по другому аналогичный вопрос :

В моем случае я пытался разобрать пустой JSON:

JSON.parse(stringifiedJSON);

Другими словами, произошло следующее:

JSON.parse("");
10 голосов
/ 29 августа 2010

Я получаю эту ошибку, когда пропускаю символ закрывающей скобки (}) в коде JavaScript. Убедитесь, что ваши брекеты правильно сбалансированы.

9 голосов
/ 12 июня 2013

Для записи, для любого, кто пытается найти различные причины этой ошибки.Пустой атрибут данных HTML5

data-mydata = ''

также вызывает ошибку.Вы должны проверить, когда значение данных является пустой строкой и вообще не включать атрибут.Само собой разумеется, что это в значительной степени относится к сгенерированному сценарием HTML.

8 голосов
/ 15 февраля 2014

Проблема для меня заключалась в том, что я делал $ .ajax с dataType: "json" для запроса POST, который возвращал HTTP 201 (создан) и тело запроса отсутствовало.Исправление было просто удалить этот ключ / значение.

6 голосов
/ 03 октября 2014

JSHint хорошо подходит для определения местоположения пропущенных скобок или неправильного синтаксиса.

5 голосов
/ 21 апреля 2016

Другая причина этой ошибки: если ваш API преднамеренно отвечает без тела ответа, но отвечает кодом состояния 200 OK вместо кода состояния 204 No Content.Некоторые библиотеки JavaScript могут не очень хорошо реагировать на непредвиденные типы содержимого, когда его нет, поэтому используйте правильный код состояния!

3 голосов
/ 01 июля 2015

Определенно будет открытая скобка, которая вызвала ошибку.

Я бы посоветовал открыть страницу в Firefox, затем открыть Firebug и проверить консоль - там будет отображаться отсутствующий символ.

Пример снимка экрана:

Firebug highlighting the error

2 голосов
/ 28 апреля 2018

Моя проблема была с кешем Google Chrome.Я проверил это, запустив свое веб-приложение на Firefox, и там не было этой ошибки.Тогда я решил попробовать очистить кеш Google Chrome, и это сработало.

...