skip to content
Gift Egwuenu
Back to TIL

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.