首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >阿波罗:你正在呼叫终止链路上的连接,这不会产生任何影响。

阿波罗:你正在呼叫终止链路上的连接,这不会产生任何影响。
EN

Stack Overflow用户
提问于 2018-08-14 11:18:57
回答 4查看 16.1K关注 0票数 25

我正在从事阿波罗、GraphQL和Nuxtjs项目,在设置阿波罗配置时,我收到了以下警告:

代码语言:javascript
复制
link.js:38 Error: You are calling concat on a terminating link, which will have no effect
at new LinkError (linkUtils.js:41)
at concat (link.js:38)
at ApolloLink.webpackJsonp../node_modules/apollo-link/lib/link.js.ApolloLink.concat (link.js:65)
at link.js:13
at Array.reduce (<anonymous>)
at from (link.js:13)
at createApolloClient (index.js:58)
at webpackJsonp../.nuxt/apollo-module.js.__webpack_exports__.a (apollo-module.js:66)
at _callee2$ (index.js:140)
at tryCatch (runtime.js:62)

这是我的代码:

代码语言:javascript
复制
import { InMemoryCache } from 'apollo-cache-inmemory';
import { createHttpLink } from 'apollo-link-http';
import { ApolloLink } from 'apollo-link';

export default ({ store, env  }) => {
  const httpLink = new createHttpLink({ uri: env.GRAPH_BASE_URL });

  // middleware
  const middlewareLink = new ApolloLink((operation, forward) => {
    const token = store.getters['user/GET_TOKEN'];

    if (token) {
      operation.setContext({
        headers: { authorization: `Bearer ${token}` }
      });
    }

    return forward(operation);
  });

  const link = middlewareLink.concat(httpLink);

  return {
    link,
    cache: new InMemoryCache()
  }
};

我在谷歌上搜索了任何类似的问题,我找到了这个https://github.com/Akryum/vue-cli-plugin-apollo/issues/47,但它并没有帮助我。我试着改变:

代码语言:javascript
复制
const link = middlewareLink.concat(httpLink);

至:

代码语言:javascript
复制
const link = Apollo.from([middlewareLink, httpLink]);

但它还是给了我同样的警告,任何帮助

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-11-06 18:52:41

我的解决方案是将Http Link放在阿波罗链接数组的末尾(在创建阿波罗客户端时使用)。

代码语言:javascript
复制
...
const param = {
  link: ApolloLink.from([
    onError(...) =>...,
    authLink...,
    new HttpLink({
      uri: '/graphql',
      credentials: 'same-origin'
    })
  ]),
  cache: ...,
  connectToDevTools: ...
}

new ApolloClient(param);

我正在使用这些库:

  • apollo-client
  • apollo-cache-inmemory
  • apollo-link
  • apollo-link-http
  • apollo-link-context
  • apollo-link-error
票数 44
EN

Stack Overflow用户

发布于 2019-03-14 18:33:48

在我的例子中,我解决了这个问题,更改了数组中的顺序,例如:

在此之前:

代码语言:javascript
复制
const links = [...middlewares, localLink, authLink, httpLink, errorLink]

之后:

代码语言:javascript
复制
const links = [...middlewares, localLink, authLink, errorLink, httpLink]
票数 21
EN

Stack Overflow用户

发布于 2018-10-29 04:34:55

我注意到,在vue-阿波罗自述中,有一些文档是供apolloClient吐露的,它说您可以关闭defaultHttpLink来使用终止链接。

代码语言:javascript
复制
return {
  link,
  cache: new InMemoryCache()
  defaultHttpLink: false, // this should do the trick
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51840201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档