Cloudflare Workers 部署
Cloudflare Workers 是 Hono 最常见的部署目标之一。它运行在边缘网络上,使用 Fetch API 模型,与 Hono 的设计非常契合。
创建 Workers 项目
pnpm create hono@latest my-worker -- --template cloudflare-workers
cd my-worker
pnpm install
pnpm dev
开发服务器通常运行在 http://localhost:8787。
基本入口
import { Hono } from 'hono'
const app = new Hono()
app.get('/', (c) => {
return c.text('Hello Cloudflare Workers!')
})
export default app
如果需要同时导出其他事件处理器,例如定时任务,可以使用对象形式:
const app = new Hono()
export default {
fetch: app.fetch,
scheduled: async (event, env, ctx) => {
console.log('scheduled task')
},
}
wrangler 配置
{
"$schema": "node_modules/wrangler/config-schema.json",
"name": "my-hono-worker",
"main": "src/index.ts",
"compatibility_date": "2026-09-29",
"vars": {
"APP_NAME": "Hono API"
}
}
环境变量通过 c.env 读取:
type Bindings = {
APP_NAME: string
}
const app = new Hono<{ Bindings: Bindings }>()
app.get('/info', (c) => {
return c.json({ name: c.env.APP_NAME })
})
静态资源
Workers 可以配置静态资源目录:
{
"assets": {
"directory": "public"
}
}
把资源放在 public/ 下:
public/
├─ favicon.ico
└─ static/
└─ hello.txt
静态资源由平台服务,Hono 继续处理动态路由。
部署
pnpm deploy
或者直接使用 Wrangler:
pnpm wrangler deploy
部署前确认:
- 已登录 Cloudflare 账号。
wrangler.jsonc中的name、main、compatibility_date正确。- Secret 已通过 Wrangler 或控制台配置。
- D1、KV、R2 等绑定名称和代码里的
Bindings一致。
Workers 注意事项
- 不要依赖长期驻留内存。实例可能被回收。
- 不要默认使用
process.env,优先使用c.env。 - 数据库连接方式要适配边缘环境,避免传统长连接池不兼容。
- CPU 时间、请求体大小、子请求数量等限制要提前查看平台文档。
Hono 让 Workers API 写起来像普通 Web 服务,但部署模型仍然是边缘函数,设计时要尊重平台限制。
相关内容
- Hono 是什么 介绍 Hono 的定位、核心特点、Web Standards 思路、多运行时能力,以及它与传统 Node.js Web 框架的差异。
- 安装和 Hello World 学习使用 create-hono 创建 Hono 项目,分别了解通用模板和 Node.js 模板的 Hello World 写法。
- 运行时选择 对比 Hono 在 Node.js、Cloudflare Workers、Bun、Deno 等运行时中的入口写法、部署方式和适用场景。
- 路由基础 学习 Hono 的 GET、POST、动态参数、通配符、路由分组和模块化路由写法。
- Context 详解 介绍 Hono Context 的 req、json、text、html、redirect、header、status、set、get 等常用 API。
- 中间件机制 学习 Hono 中间件的执行顺序、自定义中间件写法、路径匹配、next 调用和常见使用场景。