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

Next.js中apollo-server-micro调用createHandler需先await server.start()报错如何解决

问题原因

你使用的是apollo-server-micro 3.x及以上版本,该版本强制要求必须先完成服务器启动流程,再调用处理函数创建方法,你当前代码直接在实例化ApolloServer后就调用createHandler,缺少等待server.start()执行的步骤,因此触发报错。

解决方案

仅需修改/api/graphql.js文件的代码,调整启动逻辑即可,你的resolver、schema文件无需改动:

import  {  ApolloServer  }  from  "apollo-server-micro";
import  {  resolvers  }  from  "../../apis/resolver";
import  {  typeDefs  }  from  "../../apis/schemas";

const  apolloServer  =  new  ApolloServer({  typeDefs,  resolvers  });

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

// 缓存服务启动Promise,避免重复初始化
const serverStartPromise = apolloServer.start()

export default async function handler(req, res) {
  // 等待服务启动完成后再处理请求
  await serverStartPromise
  return apolloServer.createHandler({ path: "/api/graphql" })(req, res)
}

修改后重启项目即可正常访问GraphQL接口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:09:03