Получить SyntaxError: Неожиданный токен / в JSON в Webstorm, но не в Chrome

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

try {this.set("config", JSON.parse(dijitConfig));}

с dijitConfig =

"\r\n{\r\n    \"getStationUrl\" : \"http://localhost:6080/arcgis/rest/services/testcenterline/MapServer/exts/StationLocator/GetStation\",\t\r\n\t\"tolerance\" : 5,\r\n\t\"getStationInterval\" : 1\r\n}\n//# sourceURL=http://localhost:63342/StationLocator/Main/StationLocator%20JSAPI/Source/StationLocator%20JSAPI/js/StationLocatorConfig.js"

По какой-то причине, когда я запускаю это через Chrome, приложение запускается без ошибок, внутри Webstorm я получаю следующее исключение:

SyntaxError: Unexpected token / in JSON at position 180

Почему этот JSON действителен в Chrome, но не в Webstorm?

Обратите внимание, что в Webstorm у меня включен HTML5/ECMAScript 5 в Settings->Languages & Frameworks->JavaScript->Libraries.


person Rice    schedule 29.08.2016    source источник
comment
В показанной выше строковой версии JSON всего 148 символов. Это тот объект, где на самом деле возникает ошибка? (нет позиции 180).   -  person Josh Beam    schedule 30.08.2016
comment
@Josh Beam, мои извинения, см. отредактированную пасту   -  person Rice    schedule 30.08.2016


Ответы (2)


Если dijitConfig является объектом javascript, а не строкой, JSON.parse() завершится ошибкой. Вы можете только анализировать строки в объекты.

если вы загружаете этот запрос AJAX, заголовки Accept могут быть неверными, и сервер может возвращать неправильный формат. У меня это случалось раньше в Firefox, где запросы AJAX специально требовали, чтобы заголовок Accept был установлен на application/json.

person Soviut    schedule 29.08.2016

Это недопустимый JSON. Например, когда я делаю это:

JSON.parse("\r\n{\r\n    \"getStationUrl\" : \"http://localhost:6080/arcgis/rest/services/testcenterline/MapServer/exts/StationLocator/GetStation\",\t\r\n\t\"tolerance\" : 5,\r\n\t\"getStationInterval\" : 1\r\n}\n//# sourceURL=http://localhost:63342/StationLocator/Main/StationLocator%20JSAPI/Source/StationLocator%20JSAPI/js/StationLocatorConfig.js")

Я получаю: StationLocatorConfig.js:7 Uncaught SyntaxError: Unexpected token / in JSON at position 179.

Вам нужно убедиться, что ваша конфигурация действительна в формате JSON. Попробуйте использовать линтер JSON.

person Josh Beam    schedule 29.08.2016
comment
Я вставил это в Линтер с помощью вызова JSON.parse, поэтому просто необработанная строка JSON и сообщает о ней как о действительной - person Rice; 30.08.2016
comment
@Rice строка будет казаться действительной, потому что это просто строка. Однако если вы вставите проанализированный объект, вы увидите, что он недействителен. - person Josh Beam; 30.08.2016