Почему не удается получить данные с помощью fetch с localhost?

Есть проект на nextjs, хочу получать данные для страниц через fetch запрос к локальному json/js файлу.

Код запроса в компоненте страницы:

export async function getServerSideProps(context) {
  const res = await fetch(`http://localhost:3000/api/product`)
  const json = await res.json();
  console.log('json', json)
  return {
    props: {data}
  }
}


получаю такую ошибку

60197c5919221871966725.jpeg


в json файле что-то типа такого:

{
      "elements": [
        {
          "name": "Доставка",
          "url": ""
        },
        {
          "name": "Оплата",
          "url": ""
        },
        {
          "name": "Возврат",
          "url": ""
        }
      ],
      "title": "Покупателям"
    }


В чем проблема и как правильно получить данные?
  • Вопрос задан
  • 1539 просмотров
Решения вопроса 1
@Lirrr Автор вопроса
получилось решить. Сначала поправил путь, 404 пропала, но вывод в консоли html остался. В документации next js нашел пример использования rest router api, там после объекта с данными была такая запись:

export default function handler(req, res) {
  res.status(200).json(product)
}


Сам запрос:

export async function getServerSideProps() {
  const res = await fetch(`http://localhost:3000/api/product`)
  const data = await res.json()
  return {
    props: {product} 
  }
}

И все заработало.

Всем спасибо. Очередной пример, что нужно читать документацию, а не доставать глупыми вопросами умных людей.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
zkrvndm
@zkrvndm
Архитектор решений
Очевидно у вас кривой JSON. Очень похоже, что вы пытайтесь распарсить не JSON, а JavaScript-запись объекта. Попробуйте использовать eval() для чтения объекта.
Ответ написан
Видимо на самом деле приходит в ответе не json, а html, о чём говорит наличие <
Может быть там сервер редиректит на какой-нибудь login page ли там аналогичная ошибка возникает.
Ответ написан
Комментировать
@Che603000
c 2011 javascript
Для начала надо ошибку обработать.
Что у вас там сервер отвечает никому не известно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы