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

从GraphQL Yoga迁移至Apollo Server 2后Port 4466占用错误求助

解决Port 4466被占用的端口冲突问题

不用重新初始化Prisma这么麻烦,我们可以通过调整其中一个服务的端口来解决冲突,下面是两种简单可行的方案:

方案一:修改Apollo Server的监听端口

既然Prisma已经稳稳占着4466端口了,我们直接让Apollo Server换个端口运行就行,这是最省事的方法:

  1. 找到你项目里启动Apollo Server的代码段,通常长这样:
const server = new ApolloServer({ typeDefs, resolvers });

server.listen().then(({ url }) => {
  console.log(`🚀  Server ready at ${url}`);
});
  1. 修改listen方法的参数,指定一个新端口(比如4000,这也是Apollo的常用默认端口):
server.listen({ port: 4000 }).then(({ url }) => {
  console.log(`🚀  Server ready at ${url}`);
});
  1. 重新运行run dev,现在Apollo会在4000端口启动,彻底避开和Prisma的端口冲突。

如果你的项目习惯用环境变量管理配置,也可以在.env文件里加一行PORT=4000,然后代码里读取这个变量:

const port = process.env.PORT || 4000;
server.listen({ port }).then(...);

方案二:修改Prisma容器的端口映射

要是你坚持想让Apollo用4466端口,那我们可以给Prisma换个对外的映射端口,容器内部的端口保持不变就行:

  1. 先停止当前运行的Prisma容器:
docker-compose down
  1. 打开你的docker-compose.yml文件,找到prisma服务的ports配置,把"4466:4466"改成新的端口映射,比如"4467:4466":
services:
  prisma:
    image: prismagraphql/prisma:1.34
    restart: always
    ports:
      - "4467:4466"  # 这里修改对外暴露的端口
    environment:
      PRISMA_CONFIG: |
        port: 4466  # 容器内部端口无需改动
        # ... 其他原有配置保持不变
  1. 重启Prisma容器:
docker-compose up -d
  1. 最后别忘了在你的后端代码里,把Prisma的endpoint从http://localhost:4466改成http://localhost:4467,确保应用能正常连接到Prisma服务。

额外排查:确认无其他进程占用端口

如果上面的方法还是没解决问题,你可以检查下是不是有非Docker的进程也在占用4466端口:

  • Windows用户执行:netstat -ano | findstr :4466
  • macOS/Linux用户执行:lsof -i :4466
    要是找到其他占用进程,直接杀掉对应的进程就可以了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 20:38:16