错误:使用 apollo 提供程序时无法读取未定义的属性(读取 'Symbol(__APOLLO_CONTEXT__)')

问题描述 投票:0回答:1

我想在我的下一个应用程序中使用查询,但是当我使用它时,我收到错误错误:无法读取未定义的属性(读取'Symbol(APOLLO_CONTEXT)')

这是我的阿波罗客户端:

import { ApolloClient, InMemoryCache } from "@apollo/client";

const apolloClient = new ApolloClient({
  uri: "http://localhost:8000/",
  cache: new InMemoryCache(),
});

export default apolloClient;

布局.tsx:

import Footer from "./footer";
import Header from "./header";
import PageWrapper from "./pagewrapper";
import "@/styles/nav.css";

export const metadata = {
  title: "Next.js",
  description: "Generated by Next.js",
};

export default function RootLayout({
  children,
}: {
  children: React.ReactNode;
}) {
  return (
    <html lang="en">
      <body>
        <Header></Header>
        <PageWrapper>{children}</PageWrapper>
        <Footer></Footer>
      </body>
    </html>
  );
}

页面包装:

"use client";
import { ThemeProvider } from "styled-components";
import { GlobalStyles, darkTheme, lightTheme } from "@/styles/ThemeConfig";
import { useState } from "react";
import { ApolloProvider } from "@apollo/client";
import client from "./apollo";
import Header from "./header";

const PageWrapper = ({ children }: { children: React.ReactNode }) => {
  const [theme, setTheme] = useState("dark");

  const toggleTheme = () => {
    theme == "light" ? setTheme("dark") : setTheme("light");
    console.log(theme);
  };

  console.log(theme);
  return (
    <ApolloProvider client={client}>
      <ThemeProvider theme={theme == "light" ? lightTheme : darkTheme}>
        <GlobalStyles />
        <button onClick={toggleTheme}>Switch Theme</button>
        {children}
      </ThemeProvider>
    </ApolloProvider>
  );
};

export default PageWrapper;

我使用查询的地方:

import Image from "next/image";
import styles from "./page.module.css";
import { GET_ADVERTS } from "@/graphql/advert";
import { useQuery } from "@apollo/client";

export default function Home() {
  const { loading, error, data } = useQuery(GET_ADVERTS);

  if (loading) return <p>Loading....</p>;

  if (error) return <p>error: {error.message}</p>;

  console.log(data);
  return (
    <main className={styles.main}>
      <h1>Recently added:</h1>
    </main>
  );
}

查询:

import { ApolloClient, InMemoryCache, gql } from "@apollo/client";

export const GET_ADVERTS = gql`
  query GetAdverts {
    getAdverts {
      id
      location
      price
    }
  }
`;

我尝试在要查询数据的页面中使用 use client 指令,但它给出了其他错误

javascript reactjs next.js graphql apollo
1个回答
0
投票

如果您首先从服务器组件导入

@apollo/client
,则会出现此问题,但它应该已在最新版本中修复。您可以尝试将 Apollo Client 升级到最新版本(应该是 3.8.4)吗?

© www.soinside.com 2019 - 2024. All rights reserved.