Я постараюсь идти шаг за шагом
fetch
метод не выдает ошибку, даже если вы получите коды ответа 4xx или 5xx.Пожалуйста, внимательно прочитайте о Fetch API
, я полагаю, вы можете найти много интересного, о чем вы не знаете.
Вы можете легко проверить ответстатус следующий (пожалуйста, прочитайте об объекте Response
и его методах / свойствах):
fetch('/api/wrong_endpoint').then((response) => {
console.log('status code', response.status)
})
Трудно сказать, действительно ли ваш сервер возвращает код 404, потому что я не знаю ваших настроек экспресс.Если вы установите какой-нибудь обработчик отката, например, app.get('*', ...)
, он также может вернуть 200 кодов успеха.Вы можете проверить статус ответа и его тело в devTools браузера.Но я полагаю, что лучше, если вы настроите хотя бы свой /api
маршрутизатор так, чтобы он выдавал ошибку 404, если запрошенный /api/...
маршрут не найден.
В чем я действительно уверенв том, что ваш сервер возвращает некоторую HTML-разметку в ответе.И вы пытаетесь проанализировать ее как строку JSON через data.json()
, и, конечно, вы получите синтаксическую ошибку, поскольку это не JSON (формат HTML начинается с символа <
, следовательно, ошибка: SyntaxError: Unexpected token <
)