withastro/astro · error · Error
Integration " " conflicts with " ". You can only configure…
Error message
Integration "${maybeConflictingIntegration}" conflicts with "${settings.adapter.name}". You can only configure one deployment integration. What it means
`validateSetAdapter` runs when an integration registers an adapter via its `astro:config:setup` hook. If `settings.adapter` already holds an adapter with a different name, Astro throws this plain Error: only one deployment integration may be configured. The name in quotes is the previously registered adapter.
Solutions
- Remove one of the conflicting adapters from the `integrations` array, keeping only the deployment target you actually use.
- Uninstall the unused adapter package (`npm uninstall @astrojs/node`).
- Clean up config keys belonging to the removed adapter (site-specific options, env vars).
- If you meant to switch, prefer editing the config manually rather than stacking `astro add` runs.
Example fix
// before
import node from '@astrojs/node';
import vercel from '@astrojs/vercel';
export default defineConfig({
integrations: [node(), vercel()], // two deployment adapters
});
// after
import vercel from '@astrojs/vercel';
export default defineConfig({
integrations: [vercel()],
}); Defensive patterns
Strategy: validation
Validate before calling
// Fail fast at config authoring time: only one deployment integration
import vercel from '@astrojs/vercel';
const integrations = [vercel()];
// adding node() here as well would throw at runtime — keep exactly one adapter
export default defineConfig({ integrations }); Prevention
- Keep exactly one deployment adapter in `integrations` per project.
- Remove the old adapter entry (and uninstall its package) before or right after `astro add <new>`.
- Review the integrations array after copying example configs or onboarding teammates.
When it happens
Trigger: Two adapter integrations in `integrations: [node(), vercel()]`; running `astro add netlify` when the config already contains `@astrojs/node` or another adapter; a non-adapter integration that also calls `setAdapter`.
Common situations: Switching deploy targets (e.g. Vercel to Netlify) by adding the new adapter without removing the old one; copy-pasting an example config that already had an adapter; forgetting an adapter added by a team member.
Related errors
- AdapterSupportOutputMismatch
- Configured image service is not a local service
- App entrypoint must default export an object.
- Apps must be an object with an id, a name and an entrypoint.
- Apps must default export an object with an id, and a name.
AI-assisted analysis of withastro/astro@52e6c34790 (2026-08-18).
Data as JSON: /api/errors/6493868aeedfc80a.
Report an issue: GitHub.
Appendix: source
Thrown at packages/astro/src/core/dev/adapter-validation.ts:28
if (hasWarnedMissingAdapter) return;
if (settings.buildOutput === 'server' && !settings.config.adapter) {
logger.warn(
'config',
'This project contains server-rendered routes, but no adapter is installed. This is fine for development, but an adapter will be required to build your site for production.',
);
hasWarnedMissingAdapter = true;
}
}
export function validateSetAdapter(
logger: AstroLogger,
settings: AstroSettings,
adapter: AstroAdapter,
maybeConflictingIntegration: string,
command?: 'dev' | 'build' | string,
) {
if (settings.adapter && settings.adapter.name !== adapter.name) {
throw new Error(
`Integration "${maybeConflictingIntegration}" conflicts with "${settings.adapter.name}". You can only configure one deployment integration.`,
);
}
if (settings.buildOutput === 'server' && adapter.adapterFeatures?.buildOutput === 'static') {
// If the adapter is not compatible with the build output, throw an error
if (command === 'build') {
const adapterRecommendation = getAdapterStaticRecommendation(adapter.name);
throw new AstroError({
...AstroErrorData.AdapterSupportOutputMismatch,
message: AstroErrorData.AdapterSupportOutputMismatch.message(adapter.name),
hint: adapterRecommendation ? adapterRecommendation : undefined,
});
} else if (command === 'dev') {
logger.warn(
null,
`The adapter ${adapter.name} does not support emitting a server output, but the project contain server-rendered pages. Your project will not build correctly.`,View on GitHub (pinned to 52e6c34790)