Uncaught SyntaxError: неожиданный токен u в JSON в позиции 0
только при оформлении заказа и на отдельных страницах продукта я получаю следующую ошибку в журнале консоли:
VM35594:1 Uncaught SyntaxError: Unexpected token u in JSON at position 0
at JSON.parse (<anonymous>)
at run (layout.min.js:9)
at app.min.js:1
at main.min.js:2
at Object.execCb (require.min.js:112)
at Module.check (require.min.js:56)
at Module.<anonymous> (require.min.js:72)
at require.min.js:11
at require.min.js:74
at each (require.min.js:3)
Я использую расширение проверки одной страницы, но когда я отключаю это, ошибка все еще отображается. Я думал, что это может иметь какое-то отношение к отзывам на странице продукта (поскольку я переместил отзывы из вкладок), но отмена этого изменения не исправила ошибку на страницах продукта.
3 ответов
попробуйте это в консоли:
JSON.parse(undefined)
вот что вы получите:
Uncaught SyntaxError: Unexpected token u in JSON at position 0
at JSON.parse (<anonymous>)
at <anonymous>:1:6
другими словами, ваше приложение пытается парсить undefined
, который не является допустимым JSON.
для этого есть две общие причины. Во-первых, вы можете ссылаться на несуществующее свойство (или даже на несуществующую переменную, если она не находится в строгом режиме).
window.foobar = '{"some":"data"}';
JSON.parse(window.foobarn) // oops, misspelled!
второй общей причиной является неспособность получить JSON в первую очередь, что может быть вызвано клиентскими скриптами, которые игнорируют ошибки и отправляют запрос, когда они не должны.
убедитесь, что оба скрипта на стороне сервера и клиента запущены в строгого режима и lint их с помощью ESLint. Это даст вам довольно хорошую уверенность в том, что опечаток нет.
это связано с вмешательства messages
, которые приходят на страницу. На странице есть несколько кадров, которые взаимодействуют со страницей с помощью события и объекта сообщения окна. немногие из них могут быть сторонними службами, такими как cookieq
управление cookies, или может быть cartwire
служба интеграции e-com.
вам нужно обработать событие onmessage, чтобы проверить, откуда приходят сообщения, а затем проанализировать JSON соответственно.
я столкнулся с аналогичной проблемой, где одна из интеграций передавала объект JSON, а другая передавала строку, начинающуюся с u
как прокомментировал @Seth Holladay @MinusFour, вы анализируете undefined
переменной.
Попробуйте добавить if
условие перед выполнением анализа.
if (typeof test1 !== 'undefined') {
test2 = JSON.parse(test1);
}
Примечание: это просто проверка на undefined
случае. Любые другие проблемы синтаксического анализа все еще должны быть обработаны.