You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js13中使用graphql-yoga报错createServer不是函数,求解决方案

问题解答

确认:教程确实已过时

你遇到的错误源于两个核心变更:

  1. GraphQL Yoga API更新:旧版本@graphql-yoga/node导出的createServer方法在v3+版本中已被移除,替换为createYoga方法。
  2. Next.js 13路由机制变化:Next.js13新增了App Router,同时Pages Router的API路由写法也有推荐更新,旧教程基于Next.js12的写法不再适配当前版本。

Next.js13中正确的GraphQL Yoga配置方法

情况1:使用Pages Router(和旧教程路由模式一致)

在pages/api/index.js(或pages/api/graphql.js)中编写如下代码:

import { createYoga, createSchema } from '@graphql-yoga/node';
import { readFileSync } from 'fs';
import { join } from 'path';

// 读取GraphQL schema文件
const typeDefs = readFileSync(join(process.cwd(), 'schema.graphql'), 'utf8');

// 定义解析器
const resolvers = {
  Query: {
    cart: (_, { id }) => ({
      id,
      totalItems: 0,
    }),
  },
};

// 创建Yoga实例
const yoga = createYoga({
  schema: createSchema({ typeDefs, resolvers }),
  endpoint: '/api', // 对应API路由路径
  cors: false,
  logging: {
    prettyLog: false,
  },
});

// 导出HTTP方法处理函数(Next.js Pages Router推荐写法)
export { yoga as GET, yoga as POST };

情况2:使用Next.js13 App Router

在app/api/graphql/route.js中编写如下代码:

import { createYoga, createSchema } from '@graphql-yoga/node';
import { readFileSync } from 'fs';
import { join } from 'path';

const typeDefs = readFileSync(join(process.cwd(), 'schema.graphql'), 'utf8');

const resolvers = {
  Query: {
    cart: (_, { id }) => ({
      id,
      totalItems: 0,
    }),
  },
};

// 创建Yoga实例并获取请求处理器
const { handleRequest } = createYoga({
  schema: createSchema({ typeDefs, resolvers }),
  graphqlEndpoint: '/api/graphql', // 对应App Router的API路径
  cors: false,
  logging: {
    prettyLog: false,
  },
  // 适配App Router的Fetch API环境
  fetchAPI: { Request, Response },
});

// 导出HTTP方法处理函数(App Router强制要求写法)
export { handleRequest as GET, handleRequest as POST };

额外注意事项

  • 确保安装最新版依赖:运行npm install @graphql-yoga/node graphql更新包版本。
  • 使用App Router时,可在路由文件顶部添加export const runtime = 'nodejs';指定运行时(默认是edge runtime,部分场景下需要node runtime)。

内容的提问来源于stack exchange,提问作者Mel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 22:40:40