Apollo-link: 在 createHttpLink 中设置并稍后连接时,uri 不会更改

创建于 2018-04-21  ·  17评论  ·  资料来源: apollographql/apollo-link

预期行为

我希望将端点设置为不同的 url,但无论我将变量更改为什么,它总是尝试 POST 到 /graphql

const httpLink = createHttpLink({
  uri: 'http://localhost:8080/graphql',
});

const authLink = setContext((_, { headers }) => {
  // get the authentication token from local storage if it exists
  const token = localStorage.getItem('token');
  // return the headers to the context so httpLink can read them
  return {
    headers: {
      ...headers,
      authorization: token ? `Bearer ${token}` : '',
    },
  };
});

const client = new ApolloClient({
  link: authLink.concat(httpLink),
  cache: new InMemoryCache(),
});

从官方文档复制的代码: https :

实际行为

它尝试发布到 /graphql 并引发错误。

问题标签

  • [x] 有复制
  • [ ] 特征
  • [ ] 文档
  • [ ] 阻塞
  • [ ] 好的第一期

has-reproduction

最有用的评论

您是否为 ApolloClient 使用了正确的包? 我遇到了同样的问题,直到我发现我是从“apollo-boost”而不是“apollo-client”导入 ApolloClient

所有17条评论

👍 遇到同样的问题。

我遇到了同样的问题。

快速浏览一下后,“似乎”这些行上的请求是在我们使用示例中的 setter 函数设置上下文之前发出的,uri的默认上下文值。

但我可能是错的,因为我没有研究这个超过 15 分钟。

仔细考虑一下,我很确定我错了,因为在这种情况下request只是operation对象的副本。

您是否为 ApolloClient 使用了正确的包? 我遇到了同样的问题,直到我发现我是从“apollo-boost”而不是“apollo-client”导入 ApolloClient

@cobsa ,有趣的我去看看

@cobsa ~从apollo-client导入ApolloClient ,所以这不是问题,但我今天会有更多时间来研究这个,所以我们会看到我们最终会在哪里。~

原来是这个问题,我的一个同事已经改变了代码,所以它是从apollo-client导入的,并且一切正常。

@ar1a @rachid您能否确认您是否也从apollo-boost导入ApolloClient apollo-boost并且在更改为从apollo-client导入时是否按预期工作?

我遇到了同样的问题,使用apollo-client导入ApolloClient修复了它! 但我不确定这是否会导致任何问题..我的意思是, apollo-clientapollo-boost之间的ApolloClient什么区别?

所以我很确定这是我们所有人的问题,更新文档或解决从apollo-boost导入ApolloClient的问题是解决这个问题的方法。

我在这里花了几个小时才发现请求在页面的同一个 url 上,这是一个没有安装 graphql 的后端!但是,我得到的错误是误导性的..它应该说例如:graphql 不是安装在后端或无效端点..等

我得到的是:

[GraphQL error]: Message: Cannot query field "allStudents" on type "Query"., Location: [object Object], Path: undefined

我也被这件事严重烧伤了。 如果您使用 Apollo Boost,您得到的错误消息是完全没有用的,并且没有说明问题究竟是什么。

将 Apollo Boost 中的ApolloClient重命名为ApolloBoostClient以便清楚地表明它不是同一个类,这对解决此问题大有帮助。

亲爱的,你能分享你的完整代码吗?
我遇到了同样的问题,尽管我尝试从 apollo-client 而不是 apollo-boost 导入客户端。

谢谢

@jejesh26我也面临同样的问题。 似乎我给ApolloClient作为uri参数的任何东西,它都会尝试将它连接到我前端的基本 URL。

我也在使用apollo-client包,并希望看到最近的工作示例。

大家好,
我不知道我的问题是否与这里的问题有关,但我有相同的错误响应,
当我尝试使用参数执行查询时!
这就是我的解决方案!
例子:

const GET_DATA = gql `
query getData($text: String!){
 getData(text: $text) {... [whatever Object Structure you have]}
}`
const apolloQuery (text){
 return ApolloClient.query({
 query: GET_DATA,
 variables: {text: text}
})
}

我在这里花了几个小时才发现请求在页面的同一个 url 上,这是一个没有安装 graphql 的后端!但是,我得到的错误是误导性的..它应该说例如:graphql 不是安装在后端或无效端点..等

我得到的是:

[GraphQL error]: Message: Cannot query field "allStudents" on type "Query"., Location: [object Object], Path: undefined

谢谢@hopewise ,你为我节省了几个小时! 我犯了同样的错误😂

一年多后,我被这件事烧伤了。 搜索如此多的问题和指南一直给我同样的问题。 从 apollo-client 导入 ApolloClient 而不是 apollo-boost 对我有用! 我浪费了至少 4-5 个小时试图解决这个问题。 谢谢!!

好像可以关闭了! 解决方案

此页面是否有帮助?
0 / 5 - 0 等级