Add Claude commands, remote-exec script, and skills
- commands/remote.md for remote execution - remote-exec.sh script - skills: claudeception, kubernetes-latest-tag-image-pull, react-hooks-order-early-return
This commit is contained in:
parent
09631b3530
commit
fde360dbdc
44 changed files with 3053 additions and 0 deletions
|
|
@ -0,0 +1,118 @@
|
|||
---
|
||||
name: nextjs-server-side-error-debugging
|
||||
description: |
|
||||
Debug getServerSideProps and getStaticProps errors in Next.js. Use when:
|
||||
(1) Page shows generic error but browser console is empty, (2) API routes
|
||||
return 500 with no details, (3) Server-side code fails silently, (4) Error
|
||||
only occurs on refresh not client navigation. Check terminal/server logs
|
||||
instead of browser for actual error messages.
|
||||
author: Claude Code
|
||||
version: 1.0.0
|
||||
date: 2024-01-15
|
||||
---
|
||||
|
||||
# Next.js Server-Side Error Debugging
|
||||
|
||||
## Problem
|
||||
|
||||
Server-side errors in Next.js don't appear in the browser console, making debugging
|
||||
frustrating when you're looking in the wrong place. The browser shows a generic error
|
||||
page or 500 status, but no stack trace or useful error information appears in DevTools.
|
||||
|
||||
## Context / Trigger Conditions
|
||||
|
||||
This skill applies when:
|
||||
|
||||
- Page displays "Internal Server Error" or custom error page
|
||||
- Browser console shows no errors, or only a generic fetch failure
|
||||
- You're using `getServerSideProps`, `getStaticProps`, or API routes
|
||||
- Error only occurs on page refresh or direct navigation (not client-side transitions)
|
||||
- The error is intermittent and hard to reproduce in the browser
|
||||
|
||||
Common misleading symptoms:
|
||||
- "Unhandled Runtime Error" modal that doesn't show the real cause
|
||||
- Network tab shows 500 but response body is empty or generic
|
||||
- Error disappears when you add console.log (timing issue)
|
||||
|
||||
## Solution
|
||||
|
||||
### Step 1: Check the Terminal
|
||||
|
||||
The actual error with full stack trace appears in the terminal where `npm run dev`
|
||||
or `next dev` is running. This is the **first place to look**.
|
||||
|
||||
```bash
|
||||
# If you don't see the terminal, find the process
|
||||
ps aux | grep next
|
||||
# Or restart with visible output
|
||||
npm run dev
|
||||
```
|
||||
|
||||
### Step 2: Add Explicit Error Handling
|
||||
|
||||
For persistent debugging, wrap server-side code with try-catch:
|
||||
|
||||
```typescript
|
||||
export async function getServerSideProps(context) {
|
||||
try {
|
||||
const data = await fetchSomething();
|
||||
return { props: { data } };
|
||||
} catch (error) {
|
||||
console.error('getServerSideProps error:', error);
|
||||
// Return error state instead of throwing
|
||||
return { props: { error: error.message } };
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Step 3: For Production Errors
|
||||
|
||||
Check your hosting provider's logs:
|
||||
- **Vercel**: Dashboard → Project → Logs (Functions tab)
|
||||
- **AWS**: CloudWatch Logs
|
||||
- **Netlify**: Functions tab in dashboard
|
||||
- **Self-hosted**: Check your Node.js process logs
|
||||
|
||||
### Step 4: Common Causes
|
||||
|
||||
1. **Environment variables**: Missing in production but present locally
|
||||
2. **Database connections**: Connection string issues, cold starts
|
||||
3. **Import errors**: Server-only code accidentally imported on client
|
||||
4. **Async/await**: Missing await on async operations
|
||||
5. **JSON serialization**: Objects that can't be serialized (dates, functions)
|
||||
|
||||
## Verification
|
||||
|
||||
After checking the terminal, you should see:
|
||||
- Full stack trace with file name and line number
|
||||
- The actual error message (not generic 500)
|
||||
- Variable values if you added console.log statements
|
||||
|
||||
## Example
|
||||
|
||||
**Symptom**: User reports page shows "Internal Server Error" after clicking a link.
|
||||
|
||||
**Investigation**:
|
||||
1. Open browser DevTools → Console: Empty
|
||||
2. Network tab shows: `GET /dashboard → 500`
|
||||
3. Check terminal running `npm run dev`:
|
||||
|
||||
```
|
||||
Error: Cannot read property 'id' of undefined
|
||||
at getServerSideProps (/app/pages/dashboard.tsx:15:25)
|
||||
at renderToHTML (/app/node_modules/next/dist/server/render.js:428:22)
|
||||
```
|
||||
|
||||
**Cause found**: Database query returned `null` instead of user object.
|
||||
|
||||
## Notes
|
||||
|
||||
- In development, Next.js sometimes shows an error overlay, but it often has less
|
||||
detail than the terminal output
|
||||
- `reactStrictMode: true` in `next.config.js` causes double-execution of server
|
||||
functions in development, which can make debugging confusing
|
||||
- For API routes, the error appears in the same terminal as page errors
|
||||
- Client-side errors (in useEffect, event handlers) DO appear in browser console—
|
||||
this skill only applies to server-side code
|
||||
- If using `next start` (production mode locally), errors may be less verbose;
|
||||
check `NODE_ENV` and consider adding custom error logging
|
||||
Loading…
Add table
Add a link
Reference in a new issue