What Causes This Error?
This error occurs when your Astro project uses server-side rendering features but doesn’t have an adapter configured. Adapters are required to deploy SSR sites to hosting platforms.
The Problem
// astro.config.mjs
export default defineConfig({
output: 'server', // ❌ SSR enabled but no adapter
});
---
// src/pages/api/data.ts
export const prerender = false; // ❌ Server route without adapter
---
The Fix
Install an Adapter
# For Vercel
npx astro add vercel
# For Netlify
npx astro add netlify
# For Node.js
npx astro add node
# For Cloudflare
npx astro add cloudflare
Configure the Adapter
// astro.config.mjs
import { defineConfig } from 'astro/config';
import vercel from '@astrojs/vercel/serverless';
export default defineConfig({
output: 'server',
adapter: vercel(), // ✅ Adapter configured
});
Common Scenarios
Vercel Deployment
npm install @astrojs/vercel
// astro.config.mjs
import { defineConfig } from 'astro/config';
import vercel from '@astrojs/vercel/serverless';
export default defineConfig({
output: 'server',
adapter: vercel(),
});
Netlify Deployment
npm install @astrojs/netlify
// astro.config.mjs
import { defineConfig } from 'astro/config';
import netlify from '@astrojs/netlify';
export default defineConfig({
output: 'server',
adapter: netlify(),
});
Node.js / Express
npm install @astrojs/node
// astro.config.mjs
import { defineConfig } from 'astro/config';
import node from '@astrojs/node';
export default defineConfig({
output: 'server',
adapter: node({
mode: 'standalone', // or 'middleware'
}),
});
Cloudflare Workers/Pages
npm install @astrojs/cloudflare
// astro.config.mjs
import { defineConfig } from 'astro/config';
import cloudflare from '@astrojs/cloudflare';
export default defineConfig({
output: 'server',
adapter: cloudflare(),
});
Hybrid Rendering (Static + SSR)
// astro.config.mjs
import { defineConfig } from 'astro/config';
import vercel from '@astrojs/vercel/serverless';
export default defineConfig({
output: 'hybrid', // Most pages static, some server-rendered
adapter: vercel(),
});
---
// This page will be server-rendered
export const prerender = false;
---
Switch to Static Output
If you don’t need SSR:
// astro.config.mjs
export default defineConfig({
output: 'static', // ✅ No adapter needed for static sites
});
Available Adapters
| Platform | Package | Command |
|---|---|---|
| Vercel | @astrojs/vercel | npx astro add vercel |
| Netlify | @astrojs/netlify | npx astro add netlify |
| Cloudflare | @astrojs/cloudflare | npx astro add cloudflare |
| Node.js | @astrojs/node | npx astro add node |
| Deno | @astrojs/deno | npx astro add deno |
Quick Checklist
- SSR requires an adapter
- Run
npx astro add <adapter>to install - Configure adapter in
astro.config.mjs - Use
output: 'static'for adapter-free static sites - Use
output: 'hybrid'for mixed static/SSR