Error index
Provider errors: exact messages and their fixes
This page lists every error message this site has a fix page for, 44 across all providers: the exact text, the cause in one line, and a link to the fix.
Use this from your agent
- Claude Code: 4 read-only tools; cannot see your repo.
claude mcp add --transport http viberaven https://viberaven.dev/mcp - Codex: same server, in ~/.codex/config.toml.
[mcp_servers.viberaven] url = "https://viberaven.dev/mcp" - In your repo: writes Vercel + Supabase check rules for your agent (what it writes).
npx -y viberaven init
By provider
Errors by provider
- Supabase errors: 19 exact messages
- Vercel errors: 12 exact messages
- Next.js errors: 4 exact messages
- Stripe errors: 5 exact messages
44 errors
Every error message, A to Z
AuthSessionMissingError: Auth session missing!Supabase AuthSessionMissingError: getUser() or updateUser() ran on a client with no session: a signed-out visitor, or server code without the auth cookies.
@clerk/nextjs: Clerk keys are missing from your environmentSince @clerk/nextjs 7.8.0, a Next.js app with no Clerk keys throws instead of running keyless. Set both keys locally and on Vercel, then redeploy.
connect ENETUNREACHconnect ENETUNREACH from Railway to db.<ref>.supabase.co: the direct host is IPv6 only and Railway egress is IPv4 by default. Use the session pooler on 5432.
Could not find the table 'public.<table>' in the schema cachePGRST205 means the Supabase API has no table by that name: a typo, a migration not applied to this project, or a stale cache. Check, then reload the schema.
DEPLOYMENT_NOT_FOUNDVercel returns 404 DEPLOYMENT_NOT_FOUND when no deployment answers that URL: a typo, a deleted preview, or a domain not added to the project. Check the URL.
Edge Function returned a non-2xx status codeSupabase "Edge Function returned a non-2xx status code" hides the real error: read error.context for the status and body, then fix the function or its secrets.
email rate limit exceededSupabase Auth returns email rate limit exceeded (429) after 2 emails an hour on the built-in provider. Set up custom SMTP, then raise the limit in Rate Limits.
Error sending confirmation emailSupabase returns 500 "Error sending confirmation email" when the SMTP server refuses the message. With Resend, check the API key, sender domain and port.
ERR_PNPM_OUTDATED_LOCKFILEVercel builds with CI=1, so pnpm refuses a pnpm-lock.yaml that no longer matches package.json. Run pnpm install locally and commit it with package.json.
Failed to collect page data for"Failed to collect page data for /route": importing that route threw during next build, such as a client made from a missing env var. Read the error above it.
Failed to fetch dynamically imported moduleAn open tab asked for a lazy chunk your new deploy deleted. Reload on the vite:preloadError event and serve index.html with Cache-Control no-cache.
Failed to find Server Action "...". This request might be from an older or newer deployment.A page from an old build called a Server Action ID the new build does not have, so Next.js answers 409. Use Skew Protection or a fixed encryption key.
Failed to load module script: Expected a JavaScript-or-Wasm module script but the server responded with a MIME type of "text/html"A blank page with this error means the script URL returned HTML, often index.html from a SPA fallback. Fix the Vite base or the path the host serves it from.
Failed to parse private key: Error: Invalid PEM formatted message.firebase-admin throws it when the private key env var holds literal \n instead of line breaks, as pasted from the JSON. Replace \\n with \n where you read it.
Failed to send a request to the Edge Functionsupabase-js throws FunctionsFetchError when the request never got a response: a wrong project URL, a function not deployed, CORS, or a timeout.
Firebase: Error (auth/unauthorized-domain).Firebase throws auth/unauthorized-domain when the page host is not in Authorized domains. Add the Vercel host in the Firebase console; previews need theirs.
FUNCTION_INVOCATION_FAILED"This Serverless Function has crashed" (500 FUNCTION_INVOCATION_FAILED): read the first error in the Logs tab. Often an env var is unset for that environment.
FUNCTION_INVOCATION_TIMEOUTA Vercel function that runs past its max duration returns 504 FUNCTION_INVOCATION_TIMEOUT. The limit on each plan, how to raise maxDuration, and when to stream.
infinite recursion detected in policy for relationPostgres raises 42P17 when an RLS policy queries its own table, often an admin check on profiles. Move the check into a security definer function.
Invalid API keySupabase "Invalid API key" (401): the apikey header holds a key this project does not accept, such as one from another project. Copy both from one project.
Invalid originBetter Auth answers 403 Invalid origin when the Origin is not in trustedOrigins. Add your preview URL pattern, scoped to your project, not *.vercel.app.
Invalid Sentry Dsn: undefinedSentry logs Invalid Sentry Dsn: undefined when an unset DSN variable became the text "undefined". Set it where the app builds, pass it as is, redeploy.
It looks like you're running in a browser-like environmentopenai-node refuses to run in browser code because the key would reach every visitor. Move the call to a server route; drop the NEXT_PUBLIC_ or VITE_ prefix.
JWT expiredSupabase returns 401 JWT expired when a request carries an access token past its exp, often one copied into a header or cookie and never refreshed.
Max client connections reachedOn Vercel, connect to Supabase through the transaction pooler on port 6543, not the 5432 session pooler; set prepare: false (pgbouncer=true in Prisma).
MIDDLEWARE_INVOCATION_FAILEDVercel returns 500 MIDDLEWARE_INVOCATION_FAILED when middleware.ts or proxy.ts throws, often a client made from a missing env var. Read the runtime log first.
Neither apiKey nor config.authenticator providedstripe-node throws it when new Stripe() gets an empty key, such as STRIPE_SECRET_KEY unset at build time. Invalid API Key provided means Stripe rejected it.
new row violates row-level security policyormust be owner of table objectsStorage uploads need an INSERT policy on storage.objects, and upsert also needs SELECT and UPDATE. Never alter storage.objects: RLS is already on.
new row violates row-level security policySupabase "new row violates row-level security policy" (42501): no INSERT or UPDATE policy passed the row. Add one with WITH CHECK, and SELECT for .select().
[next-auth][error][NO_SECRET]NextAuth stops in production without a secret: set AUTH_SECRET or NEXTAUTH_SECRET in Vercel and redeploy. On Vercel you need no NEXTAUTH_URL or AUTH_TRUST_HOST.
Node.js Version "20.x" is discontinued and must be upgradedVercel stopped building with Node.js 20 on 2026-10-01. Change engines.node in package.json, or the Project Settings version, to 24.x or 22.x, then redeploy.
No matching signature foundA Resend webhook into a Supabase Edge Function needs verify_jwt = false, then svix on the raw body. Parsing JSON first fails with No matching signature found.
No signatures found matching the expected signature for payloadStripe "No signatures found matching the expected signature for payload": the body was parsed before verification or the whsec_ secret is wrong. Use req.text().
No such price: 'price_...'Stripe says No such price when the price ID is not in the account or mode of your secret key, often a test price with a live key. Use that mode's price ID.
[Paddle] Webhook signature verification failedPaddle signs ts:rawBody with the destination secret. Verification fails if the body was parsed, the pdl_ntfset_ key is wrong, or the ts is over 5 seconds old.
permission denied for schema publicPostgres 42501 for a schema means the API roles lost USAGE on it. Grant usage on schema public to anon, authenticated and service_role, then the tables.
permission denied for tableSupabase "permission denied for table" (42501): the anon or authenticated role has no grant. Not an RLS policy. Fix: grant select on the table to that role.
remaining connection slots are reserved for roles with the SUPERUSER attributeNeon refuses direct connections (53300) once max_connections fills, often from Vercel functions. Use the -pooler host in DATABASE_URL, one pool per instance.
Secrets scanning found secrets in buildNetlify fails the build when a variable marked secret, such as VITE_SUPABASE_ANON_KEY, is in the bundle. Omit public keys only; the service key must fail.
SubtleCryptoProvider cannot be used in a synchronous contextStripe throws "SubtleCryptoProvider cannot be used in a synchronous context" in Supabase Edge Functions. Verify with constructEventAsync instead.
The payment_method_types parameter is no longer supportedStripe API 2026-09-30.endive removed payment_method_types, and stripe-node 23 pins it. Delete the param, or pass allowed_payment_method_types instead.
Uncached data was accessed outside of <Suspense>Since create-next-app 16.4, a page that reads cookies() or uncached data outside Suspense fails next build. Wrap the read in Suspense, or cache it.
useSearchParams() should be wrapped in a suspense boundary at page "/..."next build fails when a Client Component reads useSearchParams() on a static page with no <Suspense> above it. Wrap the smallest part that reads it.
Your project's URL and Key are required to create a Supabase client!Your project's URL and Key are required (or supabaseUrl is required.) means the Supabase URL or key env var was empty. Set both in Vercel and redeploy.
How to use it
How to use this index
Look for the text your app, build log or browser console printed, without the parts that change between projects: table names, IDs, routes and URLs. The list is sorted by that text.
Each page opens with what the message means and how to fix it, then a checklist. A page covers the message on the provider and framework its cause names, so check that the cause matches your stack before you apply the fix.
Browse all launch guides · Read resources · How to make and check your next change