教程 hono tutorial

常见问题

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 层,但它本身不提供完整大型后端架构。大型项目需要额外设计模块边界、配置管理、数据库访问、权限系统、测试、日志、监控和发布流程。