Сетевая ошибка: неожиданный токен <в JSON в позиции 0 в новом ApolloError

Сетевая ошибка: неожиданный токен &lt;в JSON в позиции 0 в новом ApolloError

const httpLink = createHttpLink({
  uri: 'http://localhost:3090/'
})

const client = new ApolloClient({
  link: httpLink,
  cache: new InMemoryCache()
})

client.query({
  query: gql`
    query users {
        email
    }
  `,
})
  .then(data => console.info(data))
  .catch(error => console.error(error));

Этот запрос выдает ошибку при извлечении из клиентского кода, но когда я выполняю этот запрос в браузере на http: // локальный: 3090 / graphql, он правильно извлекает данные.

Откройте вкладку сети в консоли разработчика и расскажите нам, что такое ApolloError.

StackedQ 08.11.2018 15:20

@kiarashws добавил скриншот для запроса

Mukesh Kumar 08.11.2018 15:26

как вы можете видеть, Status Code - это 404 (не найдено), что означает, что указанный URL неверен.

StackedQ 08.11.2018 15:35

Похоже, на ваш запрос отвечает не объект JSON, а HTML-страница <HTML>.... Обычно это случай необработанных ошибок, когда вам предоставляется страница с ошибкой по умолчанию. Поскольку вы подключаетесь к корневому URL-адресу, я предполагаю, что это 404?

Freek Wiekmeijer 08.11.2018 15:54
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
8
4
19 624
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

В конечной точке graphql, на которую вы отправляете свои запросы, отсутствует /graphql. Таким образом, ваш сервер, вероятно, возвращает html-документ, содержащий сообщение об ошибке 404, которое начинается с < из <html.... Apollo пытается проанализировать это как результат запроса и не может этого сделать.

Убедитесь, что httpLink на самом деле является localhost:3090/graphql.

Также синтаксис запроса:

{
    users {
        email
    }
}

или если вы хотите назвать запрос:

query Users {
    users {
        email
    }
}

@MukeshKumar, пожалуйста, добавьте полное сообщение об ошибке к вашему вопросу.

trixn 08.11.2018 15:39

после добавления / graphql ..?

Mukesh Kumar 08.11.2018 15:41

@MukeshKumar Да. Я не могу сказать вам, почему это не удается без сообщения.

trixn 08.11.2018 15:42

POST локальный: 3090 / graphql 400 (неверный запрос) index.js: 1452 Ошибка: ошибка сети: неуспешный ответ: получен код состояния 400 в новом ApolloError (ApolloError.js: 58) в QueryManager.js: 522 в QueryManager.js: 982 в массиве. forEach (<anonymous>) в QueryManager.js: 981 в Map.forEach (<anonymous>) в QueryManager.broadcastQueries (QueryManager.js: 977) в QueryManager.js: 477

Mukesh Kumar 08.11.2018 15:42

@MukeshKumar Боюсь, что это не содержит никакой полезной информации. Но я думаю, что синтаксис вашего запроса тоже неверен. Это должен быть просто gql`{ users { email } } или qgl`query Users { users { email } }` .

trixn 08.11.2018 15:48

Похоже, проблема с сетью. Проверьте, откуда обслуживает ваш сервер. Я сделал ту же ошибку

tufac2 19.11.2021 08:28

Это происходит, когда вы неправильно определяете путь в файлах запросов. Это ошибка проверки типов при передаче аргументов

Для потомков на случай, если кто-то обнаружит это в будущем, еще одна причина, по которой вы можете получить эту ошибку, заключается в том, что ваш API возвращает что-то отличное от JSON. https://medium.com/programmers-developers/one-simple-apollo-client-debugging-tip-youll-like-7877a97b9c16

Я столкнулся с этой проблемой, потому что тип контента, который возвращался из моего API, был text/plain, а не application/json. В этом случае Apollo позволяет указать другой сериализатор тела. https://www.apollographql.com/docs/link/links/rest/

В моем случае эта ошибка возникла из-за косой черты после URL-адреса API. Возможное исправление - это правильно проверить URL-адрес вашего API и убедиться, что он ссылается на правильный URL-адрес.

В моем случае мне нужно было только убрать косую черту / после URL.

Как написал @Trixn: «Итак, ваш сервер, вероятно, возвращает html-документ, содержащий сообщение об ошибке 404, которое начинается с <from <html .... Apollo пытается проанализировать это как результат запроса и не может этого сделать».

В моем случае я не помещал «http: //» в начало своего URL-адреса, и это вернуло веб-страницу HTML с сообщением об ошибке.

Также проверьте, что обычно вы должны использовать «https: //»

Другие вопросы по теме