网络错误:新ApolloError中位置0的JSON中的意外令牌<

时间:2018-11-08 14:18:46

标签: javascript reactjs express graphql apollo

enter image description here

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.log(data))
  .catch(error => console.error(error));

从客户端代码获取此查询会出错,但是当我在http://localhost:3090/graphql的浏览器中执行此查询时,它将正确获取数据

3 个答案:

答案 0 :(得分:1)

如果将来有人发现此错误,您可能会收到此错误的另一个原因是您的 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/

答案 1 :(得分:0)

您要向其发布查询的graphql端点缺少/graphql。因此,您的服务器可能返回了一个html文档,其中包含404错误消息,该消息以<中的<html...开头。 Apollo尝试将其解析为查询结果,但没有这样做。

检查httpLink实际上是localhost:3090/graphql

查询的语法也可以是:

{
    users {
        email
    }
}

,或者如果您想命名查询:

query Users {
    users {
        email
    }
}

答案 2 :(得分:0)

在查询文件中未正确定义路径时,会发生这种情况。这是传递参数时的类型检查错误