如何使用 JavaScript 在 Express.js 中编写自定义错误处理程序中间件
什么是错误处理程序
错误处理程序负责识别和处理运行时问题。Express.js
默认预配置了内置错误处理程序。
ExpressJS 中的错误处理程序
每当服务器发生错误时,Express.js 都会检测到它,并且(除非您有自定义错误处理程序)会使用其内置错误处理程序将包含错误消息的响应发送到客户端。Express.JS 不仅能够正确处理错误,还能在应用程序重新启动时正确清空所有未使用的资源。
如何使用 JavaScript 在 Express.js 中编写自定义错误处理程序中间件🚀
1.创建自定义ErrorHandler中间件
// ErrorHandler.js
const ErrorHandler = (err, req, res, next) => {
console.log("Middleware Error Hadnling");
const errStatus = err.statusCode || 500;
const errMsg = err.message || 'Something went wrong';
res.status(errStatus).json({
success: false,
status: errStatus,
message: errMsg,
stack: process.env.NODE_ENV === 'development' ? err.stack : {}
})
}
export default ErrorHandler
注意: _err.stack
会显示发生错误的确切文件和行号。这仅在开发模式下调试代码时需要。如果项目结构在生产环境中暴露,则会很危险。_
2. 将自定义错误处理程序作为最后一个使用的中间件
// index.js (Server Entery File)
import { AuthRoute, CategoryRoute, HomeRoute, PostRoute, UserRoute } from "./routes/index.routes.js";
import ErrorHandler from "./middlewares/ErrorHandler.js";
// init app
const app = express();
// MIDDLEWARES
app.use("/", HomeRoute);
app.use("/user", verifyAccessToken, UserRoute);
app.use("/categories", CategoryRoute);
app.use("/posts", PostRoute)
app.use("/auth", AuthRoute);
// ERROR HANDLER MIDDLEWARE (Last middleware to use)
app.use(ErrorHandler)
3. 如何调用ErrorHandler
要调用 ErrorHandler,请使用next()
Express 中的。
下一个函数是 Express 路由器中的一个函数,当它被调用时,会执行当前中间件的后续中间件。
app.use("/books", (req, res, next) => {
try{
// code block to be executed
}catch(err){
next(err);
}
})
生产环境中的错误响应示例
示例错误响应正在开发中✔
为什么我应该创建自定义 ErrorHandler 而不是使用内置 ErrorHandler👀
出于多种原因,您可能需要创建自定义错误处理程序。
例如,某些项目在生产阶段不会将 NODE_ENV 设置为“production”。如果错误处理不正确,可能会导致服务器敏感信息泄露。
其他项目则需要在不同的阶段发送不同的错误对象格式。
作为开发人员,正确处理所有错误非常重要,以避免在发生错误时破坏您的应用程序。
Bentil 在这里🚀
如果您喜欢我的内容,您可以在这里支持我继续工作。👇
在下面的评论框中告诉我你的问题或建议
鏂囩珷鏉ユ簮锛�https://dev.to/qbutil/how-to-write-custom-error-handler-middleware-in-expressjs-using-javascript-29j1