auth-astro
auth-astro copied to clipboard
UnknownAction error in production (Vercel SSR with Astro)
When deploying to Vercel with SSR, I get the following runtime errors:
When hitting /_render after /api/auth/signin/google:
2025-08-06T21:31:19.942Z [error] [31m[auth][error][0m UnknownAction: Unsupported action. Read more at https://errors.authjs.dev#unknownaction
2025-08-06T21:31:19.943Z [error] at Object.signin (file:///var/task/node_modules/@auth/core/lib/pages/index.js:50:23)
at AuthInternal (file:///var/task/node_modules/@auth/core/lib/index.js:39:31)
at async Auth (file:///var/task/node_modules/@auth/core/index.js:111:34)
at async file:///var/task/dist/server/chunks/server_B4ZebFb3.mjs:37:17
at async Module.GET (file:///var/task/dist/server/chunks/server_B4ZebFb3.mjs:59:14)
at async renderEndpoint (file:///var/task/dist/server/chunks/astro/server_D7shTWlI.mjs:504:18)
at async lastNext (file:///var/task/dist/server/chunks/index_DwQYkVdZ.mjs:2026:23)
at async NOOP_MIDDLEWARE_FN (file:///var/task/dist/server/chunks/noop-middleware_sscvKdil.mjs:4:20)
at async callMiddleware (file:///var/task/dist/server/chunks/index_DwQYkVdZ.mjs:1443:10)
at async RenderContext.render (file:///var/task/dist/server/chunks/index_DwQYkVdZ.mjs:2073:22)
This is my astro.config.mjs:
// @ts-check
import { defineConfig, envField } from 'astro/config';
import tailwindcss from "@tailwindcss/vite";
import sitemap from "@astrojs/sitemap";
import vercel from '@astrojs/vercel';
import react from "@astrojs/react";
import auth from "auth-astro";
export default defineConfig({
site: "https://ciclosmelilla.com",
output: "server",
adapter: vercel({
edgeMiddleware: true,
webAnalytics: {
enabled: true,
},
maxDuration: 8,
}),
vite: {
plugins: [tailwindcss()]
},
integrations: [sitemap(), react(), auth()],
env: {
schema: {
RESEND_API_KEY: envField.string({ context: "server", access: "secret" }),
CONTACT_EMAIL: envField.string({ context: "server", access: "public" }),
CLOUDINARY_CLOUD_NAME: envField.string({ context: "server", access: "public" }),
CLOUDINARY_API_KEY: envField.string({ context: "server", access: "secret" }),
CLOUDINARY_API_SECRET: envField.string({ context: "server", access: "secret" }),
GOOGLE_CLIENT_ID: envField.string({ context: "server", access: "public" }),
GOOGLE_CLIENT_SECRET: envField.string({ context: "server", access: "secret" }),
ALLOWED_EMAILS: envField.string({ context: "server", access: "public" }),
}
}
});
And my auth.config.ts:
import Google from "@auth/core/providers/google";
import { GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET } from "astro:env/server";
import { defineConfig } from "auth-astro";
export default defineConfig({
providers: [
Google({
clientId: GOOGLE_CLIENT_ID,
clientSecret: GOOGLE_CLIENT_SECRET,
}),
],
});
My login logic:
<button
id="signin-button"
>
Iniciar sesión con Google
</button>
<script>
import { signIn } from 'auth-astro/client'
const signinButton = document.getElementById("signin-button") as HTMLButtonElement;
signinButton.onclick = () => signIn("google");
<script>
My dependencies:
"@astrojs/vercel": "^8.2.5", "@auth/core": "^0.37.4", "astro": "^5.12.4", "auth-astro": "^4.2.0",