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

如何修改GraphQL Yoga与BunJS项目的运行端口?

修改GraphQL Yoga + Bun服务端口的解决办法
  • 核心原因:你当前是用Bun的serve方法启动服务,而非Yoga自带的服务器,因此需要在Bun.serve的配置中指定端口,而非Yoga的配置项里设置。

直接指定端口的修改方案

将原代码中Bun.serve(yoga)改为包含port参数的配置对象,示例如下:

import { createSchema, createYoga } from 'graphql-yoga'
 
const yoga = createYoga({
  schema: createSchema({
    typeDefs: /* GraphQL */ `
      type Query {
        greetings: String
      }
    `,
    resolvers: {
      Query: {
        greetings: () => 'Hello from Yoga in a Bun app!'
      }
    }
  })
})
// 修改此处,添加port配置
const server = Bun.serve({
  ...yoga,
  port: 4000 // 替换成你想要的端口号
})
console.info(
  `Server is running on ${new URL(
    yoga.graphqlEndpoint,
    `http://${server.hostname}:${server.port}`
  )}`
)

环境变量动态指定端口(推荐生产环境使用)

如果需要灵活切换端口,可以通过环境变量传递,代码修改如下:

import { createSchema, createYoga } from 'graphql-yoga'
 
const yoga = createYoga({
  schema: createSchema({
    typeDefs: /* GraphQL */ `
      type Query {
        greetings: String
      }
    `,
    resolvers: {
      Query: {
        greetings: () => 'Hello from Yoga in a Bun app!'
      }
    }
  })
})
const server = Bun.serve({
  ...yoga,
  port: Number(process.env.PORT) || 3000 // 优先读取环境变量,默认3000
})
console.info(
  `Server is running on ${new URL(
    yoga.graphqlEndpoint,
    `http://${server.hostname}:${server.port}`
  )}`
)

启动时通过环境变量指定端口:

PORT=5000 bun run your-file-name.ts

补充说明

Yoga本身的配置里也有port选项,但该选项仅在调用yoga.start()启动自带服务器时生效。当你用Bun.serve托管Yoga的请求处理器时,端口控制权在Bun手里,所以必须在Bun.serve的配置中设置端口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 19:20:03