Я работаю в проекте Apollo, GraphQL и Nuxtjs, при настройке конфигурации Apollo я получил следующее предупреждение:
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)
Вот мой код:
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()
}
};
Я искал в Google любую подобную проблему, я нашел эту https://github.com/Akryum/vue-cli-plugin-apollo/issues/47 но мне это не помогло. Я пытался изменить:
const link = middlewareLink.concat(httpLink);
к:
const link = Apollo.from([middlewareLink, httpLink]);
но он по-прежнему дает мне то же предупреждение, любая помощь, пожалуйста


Я заметил, что в файле readme vue-apollo есть некоторые документы для конфигураций apolloClient, в которых говорится, что вы можете отключить defaultHttpLink, чтобы использовать завершающие ссылки.
return {
link,
cache: new InMemoryCache()
defaultHttpLink: false, // this should do the trick
}
все еще сталкивается с этой проблемой.
вы смогли это исправить? У меня все еще та же проблема
В моем случае я решил проблему, изменив порядок в массиве, например:
Перед:
const links = [...middlewares, localLink, authLink, httpLink, errorLink]
После:
const links = [...middlewares, localLink, authLink, errorLink, httpLink]
у меня сработал этот порядок: ApolloLink.from ([errorLink, middlewareLink, httpLink]);
Решение для меня - поместить Http Link в конец массива Apollo Link (используется при создании клиента Apollo).
...
const param = {
link: ApolloLink.from([
onError(...) =>...,
authLink...,
new HttpLink({
uri: '/graphql',
credentials: 'same-origin'
})
]),
cache: ...,
connectToDevTools: ...
}
new ApolloClient(param);
Я использую эти библиотеки:
apollo-clientapollo-cache-inmemoryapollo-linkapollo-link-httpapollo-link-contextapollo-link-errorСпасибо, я решил так же !, но я забыл поставить ответ, спасибо, что разместили это.
А как насчет WebSocketLink? Если вы хотите иметь и http: //, и ws: // ссылки, какая из них будет последней? И http, и ws являются закрывающими ссылками. Не могу понять этого.
Httplink должен быть концом массива ссылок.
посмотрите apollographql.com/docs/link/composition.html#additive и github.com/mrdulin/react-apollo-graphql/blob/master/client/s rc /…