Accessing Cloudflare bindings in Astro
When deploying Astro to Cloudflare Workers, you can access KV, D1, R2, and other bindings directly using the cloudflare:workers module.
import { env } from "cloudflare:workers";
export const prerender = false;
export async function GET(): Promise<Response> {
const kv = env.LIKES as KVNamespace;
const value = await kv.get("my-key");
return new Response(value);
}
The bindings are defined in your wrangler.jsonc as usual:
{
"kv_namespaces": [
{
"binding": "LIKES",
"id": "your-namespace-id"
}
]
}
No need for Astro.locals.runtime.env or any adapter-specific API. The cloudflare:workers import works in any server endpoint or middleware as long as prerender is set to false.
See the Astro Cloudflare adapter docs for more details.