Adapter ヘルパー
Adapter ヘルパーは、統一されたインターフェースでさまざまなプラットフォームと簡単に連携できます。
インポート
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.tomlwrangler.jsonc
- Deno
Deno.env.envファイル
- Bun
Bun.envprocess.env
- Node.js
process.env
- Vercel
- AWS Lambda
- Lambda@Edge
Lambda@Edge は Lambda の環境変数をサポートしていないため、代わりに Lambda@Edge イベントを使用してください。 - Fastly Compute
Fastly Compute では、ConfigStore を使ってユーザー定義のデータを管理できます。 - Netlify
Netlify では、Netlify のコンテキストを使ってユーザー定義のデータを管理できます。
ランタイムの指定
第 2 引数にランタイムのキーを渡すと、環境変数を取得するランタイムを指定できます。
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 Workersdenobunnodeedge-light- Vercel Edge Functionsfastly- Fastly Computeother- その他の不明なランタイムのキー