Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.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
Next.js 下一个JS api路由类型为graphql错误(解析器不是函数)_Next.js_Apollo Server_Typegraphql - Fatal编程技术网

Next.js 下一个JS api路由类型为graphql错误(解析器不是函数)

Next.js 下一个JS api路由类型为graphql错误(解析器不是函数),next.js,apollo-server,typegraphql,Next.js,Apollo Server,Typegraphql,我想使用graphql建立一个新的下一个JS项目。我认为跳过独立服务器并使用Next JS提供的API路由是一个好主意。这是一个启发我的例子。不幸的是,我无法启动并运行graphql 下一个JS启动时没有错误,但在将请求发送到api/graphql TypeError: resolver is not a function at apiResolver (/home/vavra/Projects/project-united/node_modules/next/dist/next-ser

我想使用graphql建立一个新的下一个JS项目。我认为跳过独立服务器并使用Next JS提供的API路由是一个好主意。这是一个启发我的例子。不幸的是,我无法启动并运行graphql

下一个JS启动时没有错误,但在将请求发送到
api/graphql

TypeError: resolver is not a function
    at apiResolver (/home/vavra/Projects/project-united/node_modules/next/dist/next-server/server/api-utils.js:6:7)
    at DevServer.handleApiRequest (/home/vavra/Projects/project-united/node_modules/next/dist/next-server/server/next-server.js:43:427)
    at async Object.fn (/home/vavra/Projects/project-united/node_modules/next/dist/next-server/server/next-server.js:35:764)
    at async Router.execute (/home/vavra/Projects/project-united/node_modules/next/dist/next-server/server/router.js:28:28)
    at async DevServer.run (/home/vavra/Projects/project-united/node_modules/next/dist/next-server/server/next-server.js:44:494)
    at async DevServer.handleRequest (/home/vavra/Projects/project-united/node_modules/next/dist/next-server/server/next-server.js:13:133)
这是我的文件src/pages/api/graphql

import { Resolver, Query } from "type-graphql";
import { ApolloServer } from "apollo-server-micro";
import { buildSchema } from "type-graphql";
import "reflect-metadata";

@Resolver()
class HelloResolver {
  @Query(() => String)
  hello() {
    return "hello";
  }
}

export const config = {
  api: {
    bodyParser: false,
  },
};

export default (async () => {
  const schema = await buildSchema({
    resolvers: [HelloResolver],
  });

  const apolloServer = new ApolloServer({ schema });

  return apolloServer.createHandler({ path: "/api/graphql" });
})();
import 'reflect-metadata';
import { ApolloServer } from 'apollo-server-micro';
import { buildSchema } from 'type-graphql';
import youResolver from '../resolvers/youResolver';
import { NextApiRequest, NextApiResponse } from 'next';

let apolloServerHandler: (req: any, res: any) => Promise<void>;

const getApolloServerHandler = async () => {
  if (!apolloServerHandler) {
    const schema = await buildSchema({
      resolvers: [youResolver],
    });
    apolloServerHandler = new ApolloServer({ schema }).createHandler({
      path: '/api/graphql',
    });
  }
  return apolloServerHandler;
};

export default async (req: NextApiRequest, res: NextApiResponse) => {
  const apolloServerHandler = await getApolloServerHandler();
  return apolloServerHandler(req, res);
};

export const config = { api: { bodyParser: false } };
这方面有什么帮助吗?

他们讨论了一个类似的问题,使用这个表单,我使用graphql类型处理nextjs

pages/api/graphql

import { Resolver, Query } from "type-graphql";
import { ApolloServer } from "apollo-server-micro";
import { buildSchema } from "type-graphql";
import "reflect-metadata";

@Resolver()
class HelloResolver {
  @Query(() => String)
  hello() {
    return "hello";
  }
}

export const config = {
  api: {
    bodyParser: false,
  },
};

export default (async () => {
  const schema = await buildSchema({
    resolvers: [HelloResolver],
  });

  const apolloServer = new ApolloServer({ schema });

  return apolloServer.createHandler({ path: "/api/graphql" });
})();
import 'reflect-metadata';
import { ApolloServer } from 'apollo-server-micro';
import { buildSchema } from 'type-graphql';
import youResolver from '../resolvers/youResolver';
import { NextApiRequest, NextApiResponse } from 'next';

let apolloServerHandler: (req: any, res: any) => Promise<void>;

const getApolloServerHandler = async () => {
  if (!apolloServerHandler) {
    const schema = await buildSchema({
      resolvers: [youResolver],
    });
    apolloServerHandler = new ApolloServer({ schema }).createHandler({
      path: '/api/graphql',
    });
  }
  return apolloServerHandler;
};

export default async (req: NextApiRequest, res: NextApiResponse) => {
  const apolloServerHandler = await getApolloServerHandler();
  return apolloServerHandler(req, res);
};

export const config = { api: { bodyParser: false } };
导入“反映元数据”;
从“apollo server micro”导入{apollo server};
从'type graphql'导入{buildSchema};
从“../resolvers/youResolver”导入youResolver;
从“下一步”导入{NextApiRequest,nextapireresponse};
让apolloServerHandler:(req:any,res:any)=>承诺;
const getApolloServerHandler=async()=>{
如果(!服务器处理程序){
const schema=wait buildSchema({
解决者:[您的解决者],
});
apolloServerHandler=新的ApolloServer({schema}).createHandler({
路径:'/api/graphql',
});
}
返回处理程序;
};
导出默认异步(请求:NextApiRequest,res:nextapireresponse)=>{
const apolloServerHandler=等待getApolloServerHandler();
返回服务器处理程序(req、res);
};
export const config={api:{bodyParser:false};
他们讨论了一个类似的问题,使用这个表单,我使用graphql类型处理nextjs

pages/api/graphql

import { Resolver, Query } from "type-graphql";
import { ApolloServer } from "apollo-server-micro";
import { buildSchema } from "type-graphql";
import "reflect-metadata";

@Resolver()
class HelloResolver {
  @Query(() => String)
  hello() {
    return "hello";
  }
}

export const config = {
  api: {
    bodyParser: false,
  },
};

export default (async () => {
  const schema = await buildSchema({
    resolvers: [HelloResolver],
  });

  const apolloServer = new ApolloServer({ schema });

  return apolloServer.createHandler({ path: "/api/graphql" });
})();
import 'reflect-metadata';
import { ApolloServer } from 'apollo-server-micro';
import { buildSchema } from 'type-graphql';
import youResolver from '../resolvers/youResolver';
import { NextApiRequest, NextApiResponse } from 'next';

let apolloServerHandler: (req: any, res: any) => Promise<void>;

const getApolloServerHandler = async () => {
  if (!apolloServerHandler) {
    const schema = await buildSchema({
      resolvers: [youResolver],
    });
    apolloServerHandler = new ApolloServer({ schema }).createHandler({
      path: '/api/graphql',
    });
  }
  return apolloServerHandler;
};

export default async (req: NextApiRequest, res: NextApiResponse) => {
  const apolloServerHandler = await getApolloServerHandler();
  return apolloServerHandler(req, res);
};

export const config = { api: { bodyParser: false } };
导入“反映元数据”;
从“apollo server micro”导入{apollo server};
从'type graphql'导入{buildSchema};
从“../resolvers/youResolver”导入youResolver;
从“下一步”导入{NextApiRequest,nextapireresponse};
让apolloServerHandler:(req:any,res:any)=>承诺;
const getApolloServerHandler=async()=>{
如果(!服务器处理程序){
const schema=wait buildSchema({
解决者:[您的解决者],
});
apolloServerHandler=新的ApolloServer({schema}).createHandler({
路径:'/api/graphql',
});
}
返回处理程序;
};
导出默认异步(请求:NextApiRequest,res:nextapireresponse)=>{
const apolloServerHandler=等待getApolloServerHandler();
返回服务器处理程序(req、res);
};
export const config={api:{bodyParser:false};

您是否设法解决了这个问题?我还试图在NextJS应用程序中设置TypeGraphQL,但遇到了同样的问题。我想知道我是否需要破解我的下一个应用程序来使用express(bleh)。@CodeAndCats不走运,我没有找到任何解决方案,所以我用express运行了我的服务器。你解决了吗?我还试图在NextJS应用程序中设置TypeGraphQL,但遇到了同样的问题。我想知道我是否需要破解我的下一个应用程序来使用express(bleh)。@CodeAndCats不走运,我没有找到任何解决方案,所以我用express运行我的服务器。