Claude-code-plugins-plus-skills vercel-common-errors
git clone https://github.com/jeremylongshore/claude-code-plugins-plus-skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/jeremylongshore/claude-code-plugins-plus-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/saas-packs/vercel-pack/skills/vercel-common-errors" ~/.claude/skills/jeremylongshore-claude-code-plugins-plus-skills-vercel-common-errors && rm -rf "$T"
plugins/saas-packs/vercel-pack/skills/vercel-common-errors/SKILL.mdVercel Common Errors
Overview
Diagnose and resolve the most common Vercel errors across three layers: build pipeline, serverless function runtime, and edge network. Each error includes the error code, root cause, and step-by-step fix.
Prerequisites
- Vercel CLI installed
- Access to deployment logs (
)vercel logs <url> - Access to Vercel dashboard for build logs
Instructions
Step 1: Identify the Error Layer
# Check deployment status and error details vercel inspect <deployment-url> # View function runtime logs vercel logs <deployment-url> --follow # View build logs via API curl -s -H "Authorization: Bearer $VERCEL_TOKEN" \ "https://api.vercel.com/v13/deployments/dpl_xxx" | jq '.state, .errorMessage'
Three error layers:
- Build errors — appear during
, exit codes in build logvercel deploy - Runtime errors — appear when functions are invoked, visible in function logs
- Edge/routing errors — HTTP errors from Vercel's edge network
Step 2: Build Errors
— Build command exited with non-zero codeBUILD_FAILED
Error: Command "npm run build" exited with 1
- Check:
→vercel.json
matches your build scriptbuildCommand - Check: all dependencies listed in
(not just devDependencies for runtime deps)package.json - Fix: run
locally to reproducenpm run build
— No build command foundMISSING_BUILD_SCRIPT
Error: Missing Build Command
- Fix: add
to"build"
scripts or setpackage.json
in vercel.jsonbuildCommand - For static sites: set
to empty string orbuildCommand"true"
— Serverless function bundle > 250 MBFUNCTION_PAYLOAD_TOO_LARGE
Error: The Serverless Function "api/heavy" is 267 MB which exceeds the maximum size of 250 MB
- Fix: add unused packages to
, use dynamic imports, split into smaller functions.vercelignore - Check:
trace output to see what is being bundled@vercel/nft
Step 3: Runtime Errors
— Unhandled exception in functionFUNCTION_INVOCATION_FAILED
# View the actual error vercel logs <deployment-url> --output=short
- Common causes: undefined env var, missing database connection, unhandled promise rejection
- Fix: wrap handler in try/catch, verify all env vars are set for the target environment
— Function exceeded max durationFUNCTION_INVOCATION_TIMEOUT
Error: Task timed out after 10.00 seconds
- Hobby: 10s max, Pro: 60s default (up to 300s), Enterprise: 900s
- Fix: optimize database queries, add connection pooling, or move to background processing
- Configure in vercel.json:
{ "functions": { "api/slow-endpoint.ts": { "maxDuration": 60 } } }
— Function didn't return a responseNO_RESPONSE_FROM_FUNCTION
- Cause: handler has a code path that doesn't call
,res.send()
, or return a Responseres.json() - Fix: ensure ALL code paths return a response, including error handlers
— Too many concurrent function invocationsFUNCTION_THROTTLED
- Hobby: 10 concurrent, Pro: 1000 concurrent
- Fix: implement client-side retry with backoff, or upgrade plan
Step 4: Edge/Routing Errors
404 NOT_FOUND
- API route 404: verify file is in
orapi/
directorypages/api/ - Page 404: check
in vercel.json, verify build output contains the fileoutputDirectory - Fix: run
to see the deployment file listingvercel inspect <url>
504 GATEWAY_TIMEOUT
- Serverless function exceeded its timeout — same as FUNCTION_INVOCATION_TIMEOUT
- Fix: increase
or optimize functionmaxDuration
413 REQUEST_ENTITY_TOO_LARGE
- Request body exceeds 4.5 MB limit
- Fix: use chunked upload, stream the body, or use presigned URLs for large files
DEPLOYMENT_NOT_FOUND
- Deployment was deleted or URL is malformed
- Fix: verify the deployment still exists with
vercel ls
Step 5: Environment Variable Errors
(Edge Runtime)ReferenceError: process is not defined
- Cause: using
in an edge functionprocess.env - Fix: Edge Functions can read env vars but only those defined at build time. Ensure vars are set.
Env var undefined in production but works in preview
- Cause: variable scoped to Preview only, not Production
- Fix: check scopes in Settings > Environment Variables, add Production target
# Check which environments have the variable vercel env ls | grep DATABASE_URL
Quick Diagnosis Flowchart
Error occurred ├── During build? → Check build logs, run `npm run build` locally ├── During function invocation? → Check function logs with `vercel logs` ├── HTTP 404? → Verify file exists in deployment: `vercel inspect` ├── HTTP 500? → Unhandled exception in function code ├── HTTP 504? → Function timeout — increase maxDuration └── HTTP 429? → Rate limited — implement retry with backoff
Output
- Error layer identified (build, runtime, or edge)
- Root cause diagnosed using logs and inspection
- Fix applied and verified via new deployment
- Prevention measures documented
Error Handling
| Error Code | HTTP | Layer | Quick Fix |
|---|---|---|---|
| — | Build | Run build locally, check deps |
| 500 | Runtime | Check env vars, add try/catch |
| 504 | Runtime | Increase maxDuration in vercel.json |
| 429 | Runtime | Reduce concurrency or upgrade plan |
| 413 | Build | Reduce bundle size |
| 404 | Edge | Verify file paths and routes |
| 500 | Edge | Remove Node.js APIs from edge code |
| 502 | Runtime | Return response from all code paths |
Resources
Next Steps
For detailed debug bundles, see
vercel-debug-bundle.