Cloudflare 公式ドキュメントに従ってプロジェクトを作成したものとします。
TL; DR
wrangler.toml
を書く。
# wrangler.toml
[vars]
API_TOKEN = "xxxxxxxxxxxxxxxxxx"
RUN npm run typegen
loader
で環境変数を使う。
export async function loader({ context }: LoaderFunctionArgs) {
const env = context.cloudflare.env as Env;
env.API_TOKEN;
}
wrangler.toml
wrangler.toml
をプロジェクトルートに作成し、
[vars]
API_TOKEN = "xxxxxxxxxxxxxxxxxx"
のように記入する。
そしてnpm run typegen
すると、
プロジェクトルートにworker-configuration.d.ts
が作成される。
// Generated by Wrangler on Sun Apr 07 2024 04:59:25 GMT+0900 (Japan Standard Time)
// by running `wrangler types`
interface Env {
API_TOKEN: "xxxxxxxxxxxxxxxxxx";
}
これにより特に設定しなくても、loader
内で環境変数が使えるようになるらしい。
Env
export async function loader({ context }: LoaderFunctionArgs) {
const apiToken = context.cloudflare.env.API_TOKEN;
}
とすると、Property 'API_TOKEN' does not exist on type 'Env'.
と怒られる。
以下仕組みはわからないがとりあえずの解決策
export async function loader({ context }: LoaderFunctionArgs) {
const env = context.cloudflare.env as Env;
env.API_TOKEN;
}
こうすれば怒られないし、env.
まで入力するとAPI_TOKEN
のようなオートコンプリートの候補まで出してくれる。
同じEnv
なのに何が違うんだろう?