Возможно, проблема в том, что в некоторых ситуациях вызываемая конечная точка не возвращает JSON, она возвращает HTML, вероятно, страницу ошибки, сопровождающую ошибку HTTP. Поэтому вам нужно проверить это в своем приложении и выяснить, почему это происходит в некоторых ситуациях, а не в других.
Так почему же вы пытаетесь проанализировать HTML как JSON? Вы не показали нам никакого кода, но я предполагаю, что вы столкнулись с леггинсом в fetch
API и у вас есть такой код:
fetch("/your/endpoint")
.then(response => response.json()) // <=== This is the footgun
.then(data => {
// ...use the data...
})
.catch(error => {
// ...report the error...
});
Проблема в том, что fetch
не не отклоняйте обещание об ошибках HTTP, только об ошибках сети. Вам нужно убедиться, что вы не получили HTTP 500, 404 и т. Д. c. код статуса:
fetch("/your/endpoint")
.then(response => {
if (!response.ok) {
throw new Error("HTTP error " + response.status);
}
return response.json();
})
.then(data => {
// ...use the data...
})
.catch(error => {
// ...report the error...
});