File size: 1,002 Bytes
b7560a4 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
export const errorHandler = (err, req, res, next) => {
console.error('Error:', err);
// JWT错误
if (err.name === 'JsonWebTokenError') {
return res.status(401).json({ error: 'Invalid token' });
}
if (err.name === 'TokenExpiredError') {
return res.status(401).json({ error: 'Token expired' });
}
// GitHub API错误
if (err.response && err.response.status) {
const status = err.response.status;
const message = err.response.data?.message || 'GitHub API error';
if (status === 401) {
return res.status(500).json({ error: 'GitHub authentication failed' });
}
if (status === 404) {
return res.status(404).json({ error: 'Resource not found in GitHub' });
}
return res.status(500).json({ error: `GitHub API error: ${message}` });
}
// 默认错误
res.status(500).json({
error: process.env.NODE_ENV === 'production'
? 'Internal server error'
: err.message
});
}; |