常见问题
Hono 只能运行在 Cloudflare Workers 吗
不是。Hono 可以运行在 Cloudflare Workers、Node.js、Bun、Deno、Vercel、Netlify、AWS Lambda 等环境。不同平台的入口和部署方式不同,但核心路由代码很相似。
Hono 在 Node.js 中需要什么
Node.js 中需要使用 @hono/node-server 适配器。官方 Node.js 指南要求较新的 Node.js 版本,例如 18.14.1+、19.7.0+ 或 20.0.0+。
Hono 能替代 Express 吗
可以替代一部分 Express API 项目,尤其是轻量服务、边缘 API 和 TypeScript 项目。但如果你的项目依赖大量 Express 中间件、模板系统或已有基础设施,迁移前要评估成本。
为什么我的 CORS 不生效
常见原因:
- CORS 中间件注册在路由之后。
origin没有包含真实前端域名。- 请求带 Cookie,但服务端没有配置
credentials: true。 - 前端请求没有设置
credentials。 - 预检请求的请求头或方法没有被允许。
TypeScript 类型能保证请求体安全吗
不能。TypeScript 只在编译期生效,客户端传来的 JSON 仍然可能是任意结构。公开 API 必须使用运行时验证,例如 hono/validator 或 @hono/zod-validator。
Hono RPC 是否等于 tRPC
不完全等同。Hono RPC 基于 Hono 路由和 hc 客户端共享类型,适合 Hono 项目内部使用。tRPC 是更完整的端到端类型安全 RPC 框架,生态和设计目标不同。
可以在 Hono 中使用数据库吗
可以。Node.js 中可以使用 Prisma、Drizzle、Knex、原生驱动等。Cloudflare Workers 中更常见的是 D1、KV、R2、外部 HTTP 数据服务或支持边缘环境的数据库连接方式。
为什么同一套代码换运行时后报错
Hono 核心代码可以跨运行时,但依赖不一定可以。检查是否使用了:
- Node.js 专属模块,例如
fs、net、tls。 - 依赖长连接的数据库驱动。
- 不支持 ESM 或不兼容目标运行时的包。
- 平台不支持的环境变量读取方式。
Hono 适合大型项目吗
Hono 可以作为大型项目中的 API 层,但它本身不提供完整大型后端架构。大型项目需要额外设计模块边界、配置管理、数据库访问、权限系统、测试、日志、监控和发布流程。
相关内容
- 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 调用和常见使用场景。