在查询中找到 @client 指令,但未指定 ApolloClient 解析器

Posted

技术标签:

【中文标题】在查询中找到 @client 指令,但未指定 ApolloClient 解析器【英文标题】:Found @client directives in a query but no ApolloClient resolvers were specified 【发布时间】:2019-11-25 15:54:40 【问题描述】:

操作系统:Windows 10 专业版 阿波罗客户端:2.6.3 阿波罗升压:0.1.16

谁能解释为什么我会收到以下错误消息?:

在查询中找到 @client 指令,但没有 ApolloClient 解析器 指定的。这意味着 ApolloClient 本地解析器处理已经 禁用,@client 指令将传递到您的链接 链。

当我如下定义我的 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,
      ,
    ,
  );

【问题讨论】:

【参考方案1】:

来自docs:

如果您有兴趣将本地状态处理功能与 Apollo Client

clientState 配置选项仅与apollo-link-state 一起使用。您需要将解析器直接添加到配置中,如文档中所示:

new ApolloClient(
  uri: '/graphql',
  resolvers:  ... ,
)

还要注意,不再有defaults 选项——应该通过直接在缓存实例上调用writeData 来初始化缓存(请参阅here)。

我建议阅读最新的文档并避免使用任何来自外部来源的示例(例如现有的 repos 或教程),因为这些可能已经过时了。

注意:从 3.0 版开始,writeData 被删除,取而代之的是 writeFragmentwriteQuery

【讨论】:

我不明白阿波罗文档中的一些内容:局部变量来自哪里?链接:local.concat(http) => apollographql.com/docs/angular/basics/local-state @JoeAllen 文档示例已过时——没有理由再使用apollo-link-state。在该示例中,您只需使用 HttpLink。 嘿,在apollographql.com/docs/react/data/local-state/… 下的文档中,它说您仍然可以使用 writeData 来初始化缓存。这也过时了吗? @Spray'n'Pray 您需要在页面左上角选择正确版本的文档。 我使用的是apollo-client 版本2.6.8(即> 2.5)并收到此错误。还需要什么额外的步骤吗?

以上是关于在查询中找到 @client 指令,但未指定 ApolloClient 解析器的主要内容,如果未能解决你的问题,请参考以下文章

已加载 PDO 和 pdo_mysql 但未找到类

通过VBA连接到DBF的查询

网站处于联机状态‘但未对连接尝试做出响应

如何使用 Apollo 工具为查询生成 Typescript 类型,包括 Apollo @client 和 @rest 指令?

我的世界中啥指令可以直接传送到村庄旁边?

已安装Rcpp Rtools但未找到错误消息g ++