在 Express.js 应用程序中使用中间件进行错误处理的方法

阅读时长 5 分钟读完

在 Express.js 应用程序中,中间件是处理 HTTP 请求和响应的一种有用的工具。它们可以用来增强应用程序的功能,同时也可以用于错误处理。在本文中,我们将讨论如何在 Express.js 应用程序中使用中间件进行错误处理,以及如何编写和测试这些中间件。

错误处理中间件

在 Express.js 应用程序中,错误处理中间件是按顺序执行的中间件。当发生错误时,Express.js 将跳过所有未处理的路由和中间件,并将控制权转移到错误处理中间件中。错误处理中间件的函数签名如下所示:

其中 err 是发生的错误,req 是请求对象,res 是响应对象,next 是传递控制到下一个中间件的函数。

当您编写自定义错误处理中间件时,您可以将此函数用作基础,然后根据需要添加逻辑。例如,以下代码使用内置的 err.status 属性来设置响应的状态码:

在应用程序中使用错误处理中间件

要在 Express.js 应用程序中使用错误处理中间件,请将其添加到 app.js 或任何您处理应用程序路由的文件中。以下是一个示例,列出了如何使用错误处理中间件:

-- -------------------- ---- -------
----- ------- - -------------------
----- --- - ----------

------------ ------------- ---- -
  --------------- -------
---

-- -------
--------------------- ---- ---- ----- -
  -------------------------
  ------------------------------- ---------
---

---------------- ---------- -
  -------------------- --- --------- -- ---- -------
---

在以上示例中,我们添加了一个路由,用于测试应用程序。然后,我们添加了一个使用 console.error 输出错误的错误处理中间件。

编写自定义错误处理中间件

除了使用内置的错误处理中间件之外,您还可以编写自定义的错误处理中间件。以下是一个示例,展示如何编写自定义错误处理中间件:

-- -------------------- ---- -------
-------- ----------------- ---- ---- ----- -
  ----- ------ - ---------- -- ----
  ----- ------- - ----------- -- --------- ------ -------
  -------------------------
    ------ -
      ------- -------
      -------- -------
    -
  ---
-

-------------- - -------------

在此示例中,我们将错误处理中间件封装在单独的模块中,并使用 JSON 格式输出错误响应。

测试错误处理中间件

编写错误处理中间件时,测试是极其重要的。为了测试我们的错误处理中间件,我们可以使用 Mocha 和 Chai 库。以下是一个测试错误处理中间件的示例:

-- -------------------- ---- -------
----- ---- - ----------------
----- ------ - ------------
----- ------------ - ---------------------------

--------------- --------- ---------- -
  ---------- ------- ---- --- ------ ---- --- --------- -------- ---------- -
    ----- --- - --- ---------------- ---- ---------
    ----- --- - ---
    ----- --- - -
      ------------ ------
      ------- -------------- -
        ---------------------------
        ------ -----
      --
      ----- -------------- -
        ----------------------
        ----------------------------
        ----------------------------------------
        ---------------------------------------------- ---- ---------
      -
    --
    ----- ---- - ---------- ---

    ----------------- ---- ---- ------
  ---
---

在此示例中,我们编写了一个简单的测试用例来测试我们的错误处理中间件。我们使用 Chai 库的 expect 函数来测试响应的状态码和 JSON 格式。请注意,我们在 res 对象中模拟了错误处理中间件的输出。

结论

在本文中,我们学习了如何使用中间件进行错误处理,在应用程序中添加错误处理中间件,并编写了自定义的错误处理中间件。此外,我们还讨论了如何测试错误处理中间件。使用这些技术,您可以编写健壮的 Express.js 应用程序,并更好地控制错误处理流程。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67218fda2e7021665e07fede

纠错
反馈