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, он правильно извлекает данные.
@kiarashws добавил скриншот для запроса
как вы можете видеть, Status Code - это 404 (не найдено), что означает, что указанный URL неверен.
Похоже, на ваш запрос отвечает не объект JSON, а HTML-страница <HTML>.... Обычно это случай необработанных ошибок, когда вам предоставляется страница с ошибкой по умолчанию. Поскольку вы подключаетесь к корневому URL-адресу, я предполагаю, что это 404?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


В конечной точке graphql, на которую вы отправляете свои запросы, отсутствует /graphql. Таким образом, ваш сервер, вероятно, возвращает html-документ, содержащий сообщение об ошибке 404, которое начинается с < из <html.... Apollo пытается проанализировать это как результат запроса и не может этого сделать.
Убедитесь, что httpLink на самом деле является localhost:3090/graphql.
Также синтаксис запроса:
{
users {
email
}
}
или если вы хотите назвать запрос:
query Users {
users {
email
}
}
@MukeshKumar, пожалуйста, добавьте полное сообщение об ошибке к вашему вопросу.
после добавления / graphql ..?
@MukeshKumar Да. Я не могу сказать вам, почему это не удается без сообщения.
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
@MukeshKumar Боюсь, что это не содержит никакой полезной информации. Но я думаю, что синтаксис вашего запроса тоже неверен. Это должен быть просто gql`{ users { email } } или qgl`query Users { users { email } }` .
Похоже, проблема с сетью. Проверьте, откуда обслуживает ваш сервер. Я сделал ту же ошибку
Это происходит, когда вы неправильно определяете путь в файлах запросов. Это ошибка проверки типов при передаче аргументов
Для потомков на случай, если кто-то обнаружит это в будущем, еще одна причина, по которой вы можете получить эту ошибку, заключается в том, что ваш 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: //»
Откройте вкладку сети в консоли разработчика и расскажите нам, что такое
ApolloError.