Files
telegram-management-system/marketing-agent/services/user-management/src/middleware/errorHandler.js
你的用户名 237c7802e5
Some checks failed
Deploy / deploy (push) Has been cancelled
Initial commit: Telegram Management System
Full-stack web application for Telegram management
- Frontend: Vue 3 + Vben Admin
- Backend: NestJS
- Features: User management, group broadcast, statistics

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-04 15:37:50 +08:00

80 lines
2.0 KiB
JavaScript

import { logger } from '../utils/logger.js';
export const errorHandler = (err, req, res, next) => {
// Log error
logger.error('Error occurred:', {
error: err.message,
stack: err.stack,
url: req.url,
method: req.method,
body: req.body,
params: req.params,
query: req.query
});
// Mongoose validation error
if (err.name === 'ValidationError') {
const errors = Object.values(err.errors).map(e => e.message);
return res.status(400).json({
error: 'Validation failed',
details: errors
});
}
// Mongoose duplicate key error
if (err.code === 11000) {
const field = Object.keys(err.keyPattern)[0];
return res.status(400).json({
error: 'Duplicate value',
field,
message: `${field} already exists`
});
}
// Mongoose cast error
if (err.name === 'CastError') {
return res.status(400).json({
error: 'Invalid ID format',
field: err.path,
value: err.value
});
}
// JWT errors
if (err.name === 'JsonWebTokenError') {
return res.status(401).json({
error: 'Invalid token'
});
}
if (err.name === 'TokenExpiredError') {
return res.status(401).json({
error: 'Token expired'
});
}
// Custom business logic errors
if (err.message.includes('not found')) {
return res.status(404).json({
error: err.message
});
}
if (err.message.includes('already exists')) {
return res.status(409).json({
error: err.message
});
}
if (err.message.includes('Cannot') || err.message.includes('Invalid')) {
return res.status(400).json({
error: err.message
});
}
// Default error
res.status(err.status || 500).json({
error: err.message || 'Internal server error',
...(process.env.NODE_ENV === 'development' && { stack: err.stack })
});
};