Skip to content

适配器工具类

适配器提供了一种通过统一接口与各种平台交互的无缝方式。

导入

ts
import { Hono } from 'hono'
import { env, getRuntimeKey } from 'hono/adapter'

env()

env() 函数可以跨不同运行时环境获取环境变量,其功能不仅限于 Cloudflare Workers 的绑定。通过 env(c) 获取的值可能因运行时环境而异。

ts
import { env } from 'hono/adapter'

app.get('/env', (c) => {
  // 在 Node.js 或 Bun 中,NAME 是 process.env.NAME
  // 在 Cloudflare 中,NAME 是写在 `wrangler.toml` 中的值
  const { NAME } = env<{ NAME: string }>(c)
  return c.text(NAME)
})

支持的运行时、无服务器平台和云服务:

指定运行时

你可以通过传递运行时键作为第二个参数来指定获取环境变量的运行时。

ts
app.get('/env', (c) => {
  const { NAME } = env<{ NAME: string }>(c, 'workerd')
  return c.text(NAME)
})

getRuntimeKey()

getRuntimeKey() 函数返回当前运行时的标识符。

ts
app.get('/', (c) => {
  if (getRuntimeKey() === 'workerd') {
    return c.text('你正在 Cloudflare 上运行')
  } else if (getRuntimeKey() === 'bun') {
    return c.text('你正在 Bun 上运行')
  }
  ...
})

可用的运行时键

以下是可用的运行时键,部分灵感来自 WinterCG 的运行时键。未列出的运行时可能也受支持,但会被标记为 other

  • workerd - Cloudflare Workers
  • deno
  • bun
  • node
  • edge-light - Vercel Edge Functions
  • fastly - Fastly Compute
  • other - 其他未知的运行时键

Released under the MIT License.