15 lines
574 B
TypeScript
15 lines
574 B
TypeScript
import type { ErrorRequestHandler } from 'express';
|
|
import { env } from '../config/env.js';
|
|
|
|
export const errorHandler: ErrorRequestHandler = (err, _req, res, _next) => {
|
|
console.error(err);
|
|
const status = err.status ?? 500;
|
|
const isClientError = status >= 400 && status < 500;
|
|
// 5xx 在生产环境不回显内部 message(避免泄漏表名/SQL/堆栈);4xx 与 dev 环境保留
|
|
const message =
|
|
!isClientError && env.NODE_ENV === 'production'
|
|
? 'internal error'
|
|
: err.message ?? 'internal error';
|
|
res.status(status).json({ error: message });
|
|
};
|