在 Express.js 应用程序中,中间件是处理 HTTP 请求和响应的一种有用的工具。它们可以用来增强应用程序的功能,同时也可以用于错误处理。在本文中,我们将讨论如何在 Express.js 应用程序中使用中间件进行错误处理,以及如何编写和测试这些中间件。
错误处理中间件
在 Express.js 应用程序中,错误处理中间件是按顺序执行的中间件。当发生错误时,Express.js 将跳过所有未处理的路由和中间件,并将控制权转移到错误处理中间件中。错误处理中间件的函数签名如下所示:
function(err, req, res, next) {}
其中 err
是发生的错误,req
是请求对象,res
是响应对象,next
是传递控制到下一个中间件的函数。
当您编写自定义错误处理中间件时,您可以将此函数用作基础,然后根据需要添加逻辑。例如,以下代码使用内置的 err.status
属性来设置响应的状态码:
function errorHandler(err, req, res, next) { res.status(err.status || 500); res.render('error', { message: err.message, error: err }); }
在应用程序中使用错误处理中间件
要在 Express.js 应用程序中使用错误处理中间件,请将其添加到 app.js 或任何您处理应用程序路由的文件中。以下是一个示例,列出了如何使用错误处理中间件:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- --- - ---------- ------------ ------------- ---- - --------------- ------- --- -- ------- --------------------- ---- ---- ----- - ------------------------- ------------------------------- --------- --- ---------------- ---------- - -------------------- --- --------- -- ---- ------- ---
在以上示例中,我们添加了一个路由,用于测试应用程序。然后,我们添加了一个使用 console.error
输出错误的错误处理中间件。
编写自定义错误处理中间件
除了使用内置的错误处理中间件之外,您还可以编写自定义的错误处理中间件。以下是一个示例,展示如何编写自定义错误处理中间件:
-- -------------------- ---- ------- -------- ----------------- ---- ---- ----- - ----- ------ - ---------- -- ---- ----- ------- - ----------- -- --------- ------ ------- ------------------------- ------ - ------- ------- -------- ------- - --- - -------------- - -------------
在此示例中,我们将错误处理中间件封装在单独的模块中,并使用 JSON 格式输出错误响应。
测试错误处理中间件
编写错误处理中间件时,测试是极其重要的。为了测试我们的错误处理中间件,我们可以使用 Mocha 和 Chai 库。以下是一个测试错误处理中间件的示例:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ------ - ------------ ----- ------------ - --------------------------- --------------- --------- ---------- - ---------- ------- ---- --- ------ ---- --- --------- -------- ---------- - ----- --- - --- ---------------- ---- --------- ----- --- - --- ----- --- - - ------------ ------ ------- -------------- - --------------------------- ------ ----- -- ----- -------------- - ---------------------- ---------------------------- ---------------------------------------- ---------------------------------------------- ---- --------- - -- ----- ---- - ---------- --- ----------------- ---- ---- ------ --- ---
在此示例中,我们编写了一个简单的测试用例来测试我们的错误处理中间件。我们使用 Chai 库的 expect
函数来测试响应的状态码和 JSON 格式。请注意,我们在 res
对象中模拟了错误处理中间件的输出。
结论
在本文中,我们学习了如何使用中间件进行错误处理,在应用程序中添加错误处理中间件,并编写了自定义的错误处理中间件。此外,我们还讨论了如何测试错误处理中间件。使用这些技术,您可以编写健壮的 Express.js 应用程序,并更好地控制错误处理流程。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67218fda2e7021665e07fede