服务器错误时返回详细堆栈信息,暴露代码路径、框架版本、甚至配置信息
// ❌ 错误做法
app.use((err, req, res, next) => {
res.status(500).json({
error: err.message,
stack: err.stack // 暴露堆栈!
})
})
// ✅ 正确做法
app.use((err, req, res, next) => {
console.error(err) // 只在服务端记录
res.status(500).json({
error: 'Internal Server Error',
requestId: generateRequestId() // 用于追踪
})
})