手把手教你解决 Express.js 404 错误

阅读时长 4 分钟读完

什么是 Express.js 404 错误

404 错误是 HTTP 协议中的一种状态码,通常表示请求的资源不存在。在使用 Express.js 构建后端应用时,我们也会遇到 404 错误。Express.js 默认的行为是响应一个简单的文本内容 "Not Found" 和状态码为 404 的 HTTP 响应,但是在实际开发中,这样的响应并不符合我们的需求。因此,我们需要针对不同的场景来处理 404 错误。

如何解决 Express.js 404 错误

1. 自定义 404 错误响应

针对浏览器请求不存在的页面的场景,我们可以自定义一个 404 页面来响应。在 Express.js 中,我们可以通过如下代码来实现:

上述代码中,我们使用了 res.status(404) 来设置 HTTP 响应的状态码为 404,然后使用 Express.js 中的 res.render() 方法来渲染 404 页面。我们可以在 render 方法中通过向页面传递参数的方式来动态设置页面内容。

2. 针对 API 请求的 404 错误响应

针对 API 请求的 404 错误响应,我们可以通过设置一个中间件来进行处理。在 Express.js 中,我们可以通过如下代码来实现:

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

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

上述代码中,我们首先通过 app.use('/api') 来匹配以 /api 开头的请求路径,并使用 next() 将错误传递下去。然后,我们使用 app.use() 来设置一个全局的错误处理中间件,并通过 req.originalUrl.startsWith('/api') 来判断当前请求的路径是否以 /api 开头。如果是 API 请求,我们就以 JSON 格式返回错误信息,否则,我们将错误交给下一个中间件进行处理。

3. 静态资源的 404 错误响应

针对静态资源的 404 错误响应,我们可以在使用 express.static() 方法设置静态资源目录时,通过 fallthrough: false 的方式来禁止在未找到的情况下进行后续中间件的处理。具体的实现如下:

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

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

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

上述代码中,我们在使用 express.static() 方法设置静态资源目录时,通过 { fallthrough: false } 来禁止在未找到的情况下进行后续中间件的处理。然后,我们使用 app.use() 设置一个全局的错误处理中间件,并根据错误的状态码来返回相应的响应。

总结

解决 Express.js 404 错误是后端开发中的常见问题。针对不同的场景,我们可以选择不同的处理方式,如自定义 404 页面、针对 API 请求的 404 错误响应、静态资源的 404 错误响应等。本文介绍了针对不同场景的解决方案和实现方法,并提供了示例代码来帮助读者更好地理解和运用。

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

纠错
反馈