轉接器輔助工具
轉接器輔助工具提供透過統一介面與各種平台互動的無縫方式。
導入
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) => {
// NAME is process.env.NAME on Node.js or Bun
// NAME is the value written in `wrangler.toml` on Cloudflare
const { NAME } = env<{ NAME: string }>(c)
return c.text(NAME)
})
支援的執行階段、無伺服器平台和雲端服務
- Cloudflare Workers
wrangler.toml
- Deno
Deno.env
.env
檔案
- Bun
Bun.env
process.env
- Node.js
process.env
- Vercel
- AWS Lambda
- Lambda@Edge
Lambda@Edge 不支援 Lambda 上的環境變數,您需要使用 Lamdba@Edge 事件 作為替代方案。 - Fastly Compute
在 Fastly Compute 上,您可以使用 ConfigStore 來管理使用者定義的資料。 - Netlify
在 Netlify 上,您可以使用 Netlify 上下文 來管理使用者定義的資料。
指定執行階段
您可以透過傳遞執行階段鍵作為第二個引數來指定執行階段以取得環境變數。
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('You are on Cloudflare')
} else if (getRuntimeKey() === 'bun') {
return c.text('You are on Bun')
}
...
})
可用的執行階段鍵
以下是可用的執行階段鍵,不可用的執行階段鍵執行階段可能受支援並標記為 other
,其中一些靈感來自 WinterCG 的執行階段鍵
workerd
- Cloudflare Workersdeno
bun
node
edge-light
- Vercel Edge Functionsfastly
- Fastly Computeother
- 其他不明的執行階段鍵