Apollo GraphQL客户端查询返回自省结果而不是数据

时间:2019-10-18 08:34:12

标签: graphql next.js apollo-client

我目前正在尝试使用 Apollo 作为 GraphQL API为 NextJS 应用获取数据/ em>客户端。 在localhost模式下的dev/production上,一切正常。

Heroku 上部署应用程序后,同一查询将返回自省模式作为结果,而不是预期的数据。在一个真实的例子中,通过运行如下查询:

{
    queryPageContents(search: "Home") {
      ...PagesFragmentsPageId
      data {
        ...PagesFragmentsPage
        ...PagesFragmentsHome
      }
    }
  }

  ${Pages.fragments.pageId}
  ${Pages.fragments.page}
  ${Pages.fragments.home}
}

我基本上是在询问有关网页的各种数据,使用片段等。 我的预期数据应该如下-例如localhost

enter image description here

但是我在Heroku上收到了这个,而不是上面的一个:

enter image description here

因此,我的应用无法渲染,因为我的代码正在寻找名为queryPageContents的JSON节点-如第一个屏幕截图所示-但它目前正在接收__schema作为查询结果。因此,这会导致前端出现500错误。

我在Google上四处搜寻,发现此graphql-disable-introspection必须安装在服务器端。我不知道它是否可以解决此问题,但我不知道如何发生。

对此有何建议?

提前感谢大家。

1 个答案:

答案 0 :(得分:0)

正如Squidex的Sebastian Stehle所注意到的那样,通过在数据加载检查之后推迟页面数据初始化,解决了该问题。在这样的NextJS场景中:

[...]
  const {loading, error, data} = useQuery(PAGE_QUERY.pages.home);
  // Instead here, pages it's being moved after error/loading checking as follows

  // Exception check
  if (error) {
    return <ErrorDb error={error} />
  }
  // DB fetching check
  if (loading) {
    return null;
  }

  // Data initialization here
  const pages = data.queryPageContents;

  return (
   // Page
   [...]
  );
[...]