7.3 KiB
Troubleshooting Guide
Issue: CredentialsSignin Error
Problem
Getting [auth][error] CredentialsSignin error when trying to login.
Root Cause
The database had old seed data without passwords. When the schema was updated to add password fields, existing records didn't get the new password values.
Solution ✅
- Reset the database:
npx prisma db push --force-reset
- Re-seed with fresh data:
npx prisma db seed
- Verify data:
node check-db.mjs
Prevention
Always reset the database when adding new required/important fields to existing models.
Issue: "Invalid credentials" on Login
Possible Causes
1. Wrong Email or Password
Check:
- Admin: admin@muller.com / admin123
- Managers: *.muller.com / muller123
- Operators: *.muller.com / muller123
2. Wrong User Type Selected
Check:
- Make sure you select the correct user type dropdown
- Admin emails only work with "Admin" type
- Manager emails only work with "Shift Manager" type
- Operator emails only work with "Operator" type
3. Database Not Seeded
Solution:
npx prisma db seed
4. Prisma Client Not Generated
Solution:
npx prisma generate
Issue: User Not Found
Check Database
Create a file check-db.mjs:
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
async function check() {
const admin = await prisma.admin.findUnique({
where: { email: 'admin@muller.com' }
})
console.log('Admin:', admin)
const manager = await prisma.shiftManager.findFirst({
where: { email: 'james.anderson@muller.com' }
})
console.log('Manager:', manager)
await prisma.$disconnect()
}
check()
Run: node check-db.mjs
Issue: Database Connection Error
Check .env File
Verify DATABASE_URL is correct:
DATABASE_URL="postgresql://user:password@localhost:5432/muller_db"
Check PostgreSQL is Running
# Windows
services.msc
# Look for PostgreSQL service
# Or check connection
psql -U postgres -d muller_db
Issue: Shift Not Appearing for Operator
Checklist
- ✅ Shift was created for today's date
- ✅ Operator is assigned to the shift
- ✅ Shift status is "active"
- ✅ Operator's email matches the one used to login
- ✅ Operator's job position is "Blow Moulder Level 1"
Debug Query
const worker = await prisma.worker.findFirst({
where: { email: 'david.wilson.red@muller.com' }
})
const shifts = await prisma.shiftTeamMember.findMany({
where: { workerId: worker.id },
include: { shift: true, machine: true }
})
console.log(shifts)
Issue: Data Not Saving
Check Browser Console
- Open DevTools (F12)
- Go to Console tab
- Look for errors when clicking Save
Check Network Tab
- Open DevTools (F12)
- Go to Network tab
- Click Save button
- Look for failed requests (red)
- Click on the request to see error details
Common Causes
- API route not found (404)
- Server error (500)
- Invalid data format
- Missing required fields
Issue: Charts Not Displaying
Check Data Format
Bottle weight tracking data should be:
[
{
time: "2024-01-01T08:00:00Z",
bottle1: 33.8,
bottle2: 34.1,
bottle3: 34.0,
bottle4: 33.9,
average: 33.95,
upperLimit: 34.45,
lowerLimit: 33.45
}
]
Check Recharts Installation
npm list recharts
If not installed:
npm install recharts
Issue: Session Expired / Logged Out
Cause
NextAuth sessions expire after a period of inactivity.
Solution
Simply login again. To extend session time, update lib/auth.ts:
export const { handlers, signIn, signOut, auth } = NextAuth({
session: {
maxAge: 30 * 24 * 60 * 60, // 30 days
},
// ... rest of config
})
Issue: Cannot Access Admin/Manager/Operator Pages
Check Middleware
Verify middleware.ts exists and is configured:
export { auth as middleware } from "./lib/auth"
export const config = {
matcher: ["/((?!api|_next/static|_next/image|favicon.ico|login).*)"],
}
Check Session
Add debug logging in page:
import { auth } from "@/lib/auth"
export default async function Page() {
const session = await auth()
console.log('Session:', session)
// ...
}
Issue: Build Errors
TypeScript Errors
npx tsc --noEmit
Fix Common Issues
- Missing types:
npm install @types/node @types/react -D - Prisma client:
npx prisma generate - Clear cache:
rm -rf .next
Issue: Development Server Won't Start
Check Port
Port 3000 might be in use:
# Windows
netstat -ano | findstr :3000
taskkill /PID <PID> /F
# Or use different port
npm run dev -- -p 3001
Check Dependencies
npm install
Clear Cache
rm -rf .next
rm -rf node_modules
npm install
Debug Mode
Enable NextAuth Debug
Already enabled in development. Check terminal for logs:
Attempting login for admin@muller.com as admin
Admin login successful
Enable Prisma Logging
Update lib/prisma.ts:
export const prisma = new PrismaClient({
log: ['query', 'info', 'warn', 'error'],
})
Quick Fixes
Reset Everything
# Reset database
npx prisma db push --force-reset
# Seed data
npx prisma db seed
# Clear Next.js cache
rm -rf .next
# Restart dev server
npm run dev
Verify Installation
# Check Node version (should be 18+)
node --version
# Check npm packages
npm list --depth=0
# Check Prisma
npx prisma --version
Getting Help
Check Logs
- Terminal - Server-side errors
- Browser Console - Client-side errors
- Network Tab - API errors
Collect Information
When reporting issues, include:
- Error message (full stack trace)
- Steps to reproduce
- Browser and version
- Node version
- Operating system
- Relevant code snippets
Common Error Messages
"Prisma Client not found"
npx prisma generate
"Cannot find module '@prisma/client'"
npm install @prisma/client
"Database connection failed"
Check PostgreSQL is running and DATABASE_URL is correct
"Invalid prisma.xxx.findXxx() invocation"
Schema and database are out of sync:
npx prisma db push
"Module not found: Can't resolve 'bcryptjs'"
npm install bcryptjs
Performance Issues
Slow Queries
Add indexes to frequently queried fields in schema.prisma:
model Worker {
email String? @unique
empNo String @unique
// ...
}
Large Data Sets
Implement pagination:
const workers = await prisma.worker.findMany({
take: 50,
skip: page * 50
})
Security Checklist
✅ Passwords are hashed with bcrypt ✅ Sessions are secure (httpOnly cookies) ✅ Routes are protected with middleware ✅ Environment variables are not committed ✅ SQL injection prevented (Prisma) ✅ XSS prevented (React escaping)
Maintenance
Regular Tasks
- Backup database weekly
- Update dependencies monthly
- Review logs for errors
- Test all user flows
- Archive old shifts
Database Backup
pg_dump -U postgres muller_db > backup.sql
Database Restore
psql -U postgres muller_db < backup.sql