В запросе найдены директивы @client, но не указаны преобразователи ApolloClient

ОС: 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,
      },
    },
  });
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
2 155
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Из документы:

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.

Я что-то не понял в документации по аполлону: откуда берется локальная переменная? ссылка: local.concat(http) => apollographql.com/docs/angular/basics/local-state

Joe Allen 02.04.2020 13:46

@JoeAllen пример документации устарел - больше нет причин использовать apollo-link-state. В этом примере вы просто использовали бы HttpLink.

Daniel Rearden 02.04.2020 13:55

Эй, в документации под apollographql.com/docs/react/data/local-state/… сказано, что вы все еще можете использовать writeData для инициализации кеша. Это тоже устарело?

Spray'n'Pray 28.04.2020 10:44

@Spray'n'Pray вам нужно выбрать правильную версию документов в верхнем левом углу страницы.

Daniel Rearden 28.04.2020 11:52

Я использую apollo-client версию 2.6.8 (то есть > 2.5) и получаю эту ошибку. Требуются ли какие-либо дополнительные действия?

coler-j 18.01.2021 15:54

Другие вопросы по теме