运行时包管理器打包器测试运行器代码检查格式化指南参考博客反馈

在 Vercel 上部署 Bun 应用

Vercel 是一个用于构建、部署和扩展应用的云平台。Vercel Functions 可以在 Bun 运行时上运行,可以通过 Vercel 支持的框架运行,也可以作为 Bun.serve() 服务器运行。


  1. 在 vercel.json 中配置 Bun

    要在 Bun 上运行 Functions,请将 bunVersion 字段添加到 vercel.json 文件中:

    vercel.json
    {
    	"bunVersion": "1.4.x" // [!code ++]
    }
    

    Vercel 会管理补丁版本。

    为获得最佳效果,请确保本地 Bun 版本与 Vercel 使用的版本一致。

  2. 添加服务器

    选择请求到达代码的方式。

    Vercel 的 Bun 框架预设会将部署的每个请求发送到单个 Bun.serve() 服务器。当项目设置了 bunVersion、包含 bun.lock 文件,并且在以下路径之一存在服务器入口点时,Vercel 会使用该预设:

    • server.{js,cjs,mjs,ts,cts,mts}
    • src/server.{js,cjs,mjs,ts,cts,mts}

    在 Bun 1.2 或更高版本中,bun install 会创建 bun.lock。在旧版本中,请运行 bun install --save-text-lockfile。该预设不会检测二进制格式的 bun.lockb。

    在模块加载时调用一次 Bun.serve()。Vercel 会检测到该调用,并将传入请求路由到它。Vercel 支持 fetch、routes、error 和 websocket 选项:

    server.ts
    Bun.serve({
    	routes: {
    		"/health": () => Response.json({ status: "ok" }),
    	},
    	fetch() {
    		return new Response("Hello from Bun on Vercel");
    	},
    });
    

    最小项目包含 package.json、bun.lock、server.ts 以及上一步中的 vercel.json。它不需要 api/ 目录或任何路由配置。

  3. 部署你的应用

    将你的代码库连接至 Vercel,或通过 CLI 进行部署:

    terminal
    # 使用 bunx(无全局安装)
    bunx vercel login
    bunx vercel deploy
    

    或者全局安装 Vercel CLI:

    terminal
    bun i -g vercel
    vercel login
    vercel deploy
    

    查看更多 Vercel 部署 CLI 文档 →

  4. 验证运行时

    要确认你的部署使用了 Bun,可以打印 Bun 版本:

    server.ts
    console.log("runtime", process.versions.bun);
    
    Text
    runtime 1.4.0
    

    参考 Vercel Bun 运行时文档了解功能支持 →


  • Fluid 计算:Bun 和 Node.js 运行时均运行在 Fluid 计算上,并支持相同的核心 Vercel Functions 功能。
  • 中间件:若要使用 Bun 运行路由中间件,需要将运行时设置为 nodejs:
middleware.ts
export const config = { runtime: "nodejs" }; // [!code ++]