Open3

Next.js on Pages, Hono on Workersでの環境変数の取得方法の違い

きうきうきうきう

Next.js on Pages

https://github.com/cloudflare/next-on-pages/tree/main/packages/next-on-pages#cloudflarenext-on-pages

import { getRequestContext } from '@cloudflare/next-on-pages';
const { env } = getRequestContext();

を利用するのが良さそう。なおトップレベルには書くことができず、サーバーで実行されるコード(api router, server components)で動く。

↓あまり役に立たなかった
https://developers.cloudflare.com/pages/functions/bindings/#environment-variables

Hono on Workers

https://hono.dev/getting-started/cloudflare-workers#bindings

type Bindings = {
  MY_BUCKET: R2Bucket
  USERNAME: string
  PASSWORD: string
}

const app = new Hono<{ Bindings: Bindings }>()

// Access to environment values
app.put('/upload/:key', async (c, next) => {
  const key = c.req.param('key')
  await c.env.MY_BUCKET.put(key, c.req.body)
  return c.text(`Put ${key} successfully!`)
})

Bindingsとして与えることでc.envからアクセスできる。

↓あまり役に立たなかった
https://developers.cloudflare.com/workers/configuration/environment-variables/

きうきうきうきう

なお、環境変数とシークレットの書き分け

wrangler.toml [vars]

# wrangler.toml
[vars]
YOUR_ENV=public_value

.dev.vars

YOUR_KEY=secret_value