首页 > 解决方案 > GraphqQL 发送到客户端后无法设置标头

问题描述

我已尝试查看与此问题相关的其他关于 SO 的文章,但我无法解决此问题。

我有一个graphql api,在我的UI端组件中,我这样称呼它

useEffect(()=>{
    const leaders = graphQLClient.request(GetLeadersQuery)
    if(leaders && leaders.leaders) {
      let leadersList = JSON.parse(leaders.leaders)
      setLeaders(leadersList)
    }
  }, [leaders])

在服务器端,这看起来像这样

leaders: (_parent, args, _context) => {
      return (JSON.stringify({
        name:"Jane Dooe"
      }))

这是我正在使用的查询

  query {
    leaders
  }

现在每次,我的客户端代码都被命中,我在终端中看到以下错误。

Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client

我的用例非常简单,但我不明白为什么会遇到这个错误。

更新 在我的客户端,我尝试执行以下操作,以确保我正在解决承诺,但我仍然得到相同的结果。

  useEffect(()=>{
    async function getLeaders(){
      const leaders = await graphQLClient.request(GetLeadersQuery)
      console.log({ leaders })
      if (leaders && leaders.leaders) {
        let leadersList = JSON.parse(leaders.leaders)
        setLeaders(leadersList)
      }
    }

    getLeaders()
  }, [])

在我正在使用的服务器端

  1. NextJS
  2. 阿波罗服务器微

在我正在使用的客户端

  1. 反应
  2. graphql-请求

你能帮忙吗?

谢谢

标签: node.jsreactjs

解决方案


推荐阅读