ОС: Windows 10 Pro
аполло-клиент: 2.6.3
аполлон-буст: 0.1.16
Кто-нибудь может объяснить, почему я получаю следующее сообщение об ошибке?:
Found @client directives in a query but no ApolloClient resolvers were specified. This means ApolloClient local resolver handling has been disabled, and @client directives will be passed through to your link chain.
когда я определил свой ApolloClient следующим образом:
return new ApolloClient({
uri: process.env.NODE_ENV === 'development' ? endpoint : prodEndpoint,
request: operation => {
operation.setContext({
fetchOptions: {
credentials: 'include',
},
headers: { cookie: headers && headers.cookie },
});
},
// local data
clientState: {
resolvers: {
Mutation: {
toggleCart(_, variables, { cache }) {
// Read the cartOpen value from the cache
const { cartOpen } = cache.readQuery({
query: LOCAL_STATE_QUERY,
});
// Write the cart State to the opposite
const data = {
data: { cartOpen: !cartOpen },
};
cache.writeData(data);
return data;
},
},
},
defaults: {
cartOpen: false,
},
},
});




Из документы:
If you're interested in integrating local state handling capabilities with Apollo Client < 2.5, please refer to our (now deprecated) apollo-link-state project. As of Apollo Client 2.5, local state handling is baked into the core, which means it is no longer necessary to use apollo-link-state
Опция конфигурации clientState использовалась только с apollo-link-state. Вам нужно добавить преобразователи непосредственно в конфигурацию, как показано в документации:
new ApolloClient({
uri: '/graphql',
resolvers: { ... },
})
Также обратите внимание, что больше нет опции defaults — кеш следует инициализировать, вызвав writeData непосредственно в экземпляре кеша (см. здесь).
Я бы посоветовал просмотреть последние документы и избегать любых примеров из внешних источников (например, существующих репозиториев или руководств), поскольку они могут быть устаревшими.
Примечание. Начиная с версии 3.0, writeData был удален в пользу writeFragment и writeQuery.
@JoeAllen пример документации устарел - больше нет причин использовать apollo-link-state. В этом примере вы просто использовали бы HttpLink.
Эй, в документации под apollographql.com/docs/react/data/local-state/… сказано, что вы все еще можете использовать writeData для инициализации кеша. Это тоже устарело?
@Spray'n'Pray вам нужно выбрать правильную версию документов в верхнем левом углу страницы.
Я использую apollo-client версию 2.6.8 (то есть > 2.5) и получаю эту ошибку. Требуются ли какие-либо дополнительные действия?
Я что-то не понял в документации по аполлону: откуда берется локальная переменная? ссылка: local.concat(http) => apollographql.com/docs/angular/basics/local-state