Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 页面加载时的Graphql错误请求_Node.js_Reactjs_Next.js_Apollo Client_Keystonejs - Fatal编程技术网

Node.js 页面加载时的Graphql错误请求

Node.js 页面加载时的Graphql错误请求,node.js,reactjs,next.js,apollo-client,keystonejs,Node.js,Reactjs,Next.js,Apollo Client,Keystonejs,大家好,节日快乐 我正在用KeystoneJS和NextJS构建一个网站。我在中间添加了Apollo客户端 然而,我现在和阿波罗的客户有一个问题。我也尝试了不同的地方,但结果是一样的,不管怎样,这是我的app.tsx文件 import { useReducer } from "react"; import { useRouter } from "next/router"; import { ThemeProvider } from "styled

大家好,节日快乐

我正在用KeystoneJS和NextJS构建一个网站。我在中间添加了Apollo客户端

然而,我现在和阿波罗的客户有一个问题。我也尝试了不同的地方,但结果是一样的,不管怎样,这是我的app.tsx文件

import { useReducer } from "react";
import { useRouter } from "next/router";
import { ThemeProvider } from "styled-components";

import { HttpLink } from "apollo-link-http";
import { ApolloClient } from "apollo-client";
import { InMemoryCache } from "apollo-cache-inmemory";
import { Query, KeystoneProvider } from "@keystonejs/apollo-helpers";
import { ApolloProvider, gql } from "@apollo/client";

import { primaryTheme } from "../styles/theme";
import GlobalStyle from "../styles/global";

import { initialState, globalReducer } from "../context/reducer";

import Meta from "../components/global/Meta";
import { Header } from "../components/global/Header";
import { globalContext } from "../context/contex";
import Footer from "../components/global/Footer";
import Loading from "../components/global/Loading";

const client = new ApolloClient({
  ssrMode: true,
  cache: new InMemoryCache(),
  link: new HttpLink({
    uri: process.env.NEXT_PUBLIC_API_URL,

    fetchOptions: {
      mode: 'cors'
     },
  }),
});


const QUERY = gql`
query {
  allOperations{
    id
    name
  }
}
`

const MyApp = ({ Component, pageProps }) => {
  const [store, dispatch] = useReducer(globalReducer, initialState);
  const router = useRouter();

  return (
    <ApolloProvider client={client}>
      <KeystoneProvider>

        <ThemeProvider theme={primaryTheme}>

          <Meta />
          {router.route !== "/" && <Header />}
          <Query
            query={QUERY}
          >
          {({ loading, data }) => {
            console.log(data);
            
            if(loading){ 
              return <Loading /> 
            } else { 

              return <Component {...pageProps} />
        }}}
          </Query>
          <Footer />
          <GlobalStyle />
        </ThemeProvider>
      </KeystoneProvider>
    </ApolloProvider>
  );
};


export default MyApp;
后端正在本地主机上运行:3000 前端正在本地主机7777上运行

提前谢谢


Happy Holidays

找到了此错误的原因,KeysonProvider出于某种原因创建了此问题。如果有人知道原因,最好知道原因。

我也遇到了同样的问题,并且已经找到了解决办法

该错误是由@keystonejs/apollo helpers中过时的GraphQL查询引起的。您可以通过更新dist目录中的代码,并更新包含META_QUERY变量的所有文件,以包含缺少的查询子字段

query ListMeta {
  _ksListsMeta {
    schema {
      type
      queries {
        item
        list
        meta
        __typename
      }
      relatedFields {
        type
        fields
      }
    }
  }
}

请记住,当重新安装/更新@keystonejs/apollo helpers包时,此解决方案将不起作用。

400是错误的请求,您没有发送服务器所需的确切数据。查看您要发送的内容以及GraphQL合同要求的内容。@Nishant我也更新了问题,错误显示“\u ListQueries”类型的“Field”查询必须有一系列子字段。您是指“queries{…}”?“review”吗。我根本不要求这个。
const { Keystone } = require("@keystonejs/keystone");
const { GraphQLApp } = require("@keystonejs/app-graphql");
const { AdminUIApp } = require("@keystonejs/app-admin-ui");
const { MongooseAdapter: Adapter } = require("@keystonejs/adapter-mongoose");
const { PasswordAuthStrategy } = require("@keystonejs/auth-password");
const { NextApp } = require('@keystonejs/app-next');
require("dotenv").config();
const OperationSchema = require("./lists/Operation.ts");
const UserSchema = require("./lists/User.ts");

const PROJECT_NAME = "frank";
const adapterConfig = {
  mongoUri: process.env.DATABASE,
};

/**
 * You've got a new KeystoneJS Project! Things you might want to do next:
 * - Add adapter config options (See: https://keystonejs.com/keystonejs/adapter-mongoose/)
 * - Select configure access control and authentication (See: https://keystonejs.com/api/access-control)
 */

const keystone = new Keystone({
  adapter: new Adapter(adapterConfig),
});

keystone.createList("Operation", OperationSchema);
keystone.createList("User", UserSchema);

const authStrategy = keystone.createAuthStrategy({
  type: PasswordAuthStrategy,
  list: "User",
  config: {
    identityField: "username",
    secretField: "password",
  },
});

module.exports = {
  keystone,
  apps: [
    new GraphQLApp(),
    new AdminUIApp({ name: PROJECT_NAME, enableDefaultRoute: false }),
    new NextApp({ dir: '../frontend/' }),
  ],
};
query ListMeta {
  _ksListsMeta {
    schema {
      type
      queries {
        item
        list
        meta
        __typename
      }
      relatedFields {
        type
        fields
      }
    }
  }
}