在使用 Express.js 开发 Web 应用时,有时候会遇到 GET 请求出现 404 Not Found 的问题。这种问题很常见,但是解决起来并不困难。本文将介绍如何解决这种问题,并提供示例代码。
问题描述
当我们在 Express.js 中定义了一个 GET 路由,但是在浏览器中访问该路由时却出现了 404 Not Found 错误,这时就需要检查代码中是否存在问题。
解决方法
1. 检查路由是否正确
首先需要检查代码中定义的路由是否正确。如果路由定义错误,那么即使在浏览器中输入正确的 URL,也会出现 404 Not Found 错误。
以下是一个示例代码:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- --- - ---------- -- ------- --------------------- ----- ---- -- - -- -- --- ----- --- -- ----------- ---- ---------------- ----- ---- -- - -- -- --- ----- ---
在上面的代码中,第二个路由定义错误,缺少了前缀 /api。这时在浏览器中访问 /api/users 时就会出现 404 Not Found 错误。
2. 检查路由顺序
在 Express.js 中,路由的顺序非常重要。如果路由的顺序不正确,那么可能会导致某些路由无法被匹配到,从而出现 404 Not Found 错误。
以下是一个示例代码:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- --- - ---------- -- -------- --------------- ----- ---- -- - -- -- --- ----- --- --------------------- ----- ---- -- - -- -- --- ----- ---
在上面的代码中,第一个路由定义了一个参数为 id 的路由,而第二个路由定义了一个 /api/users 的路由。如果我们先访问 /api/users,就会出现 404 Not Found 错误,因为 Express.js 会先匹配到第一个路由,而不是第二个路由。
正确的做法是将 /api/users 的路由定义放在第一个路由的后面:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- --- - ---------- -- ------- --------------------- ----- ---- -- - -- -- --- ----- --- --------------- ----- ---- -- - -- -- --- ----- ---
3. 检查静态文件目录
如果我们在 Express.js 中使用了静态文件中间件,那么需要检查静态文件目录是否正确。如果目录不正确,那么访问静态文件时就会出现 404 Not Found 错误。
以下是一个示例代码:
const express = require('express'); const app = express(); // 错误的静态文件目录 app.use(express.static('public')); // 正确的静态文件目录 app.use(express.static(__dirname + '/public'));
在上面的代码中,第一个静态文件目录定义错误,只写了 public,而没有写完整的路径。这时在浏览器中访问静态文件时就会出现 404 Not Found 错误。
正确的做法是使用 __dirname 变量获取当前文件所在的目录,并将 public 目录加上去。
示例代码
以下是一个完整的示例代码,包括了正确的路由定义、正确的路由顺序和正确的静态文件目录定义。
-- -------------------- ---- ------- ----- ------- - ------------------- ----- --- - ---------- -- ---- --------------------- ----- ---- -- - -- -- --- ----- --- -- -------- -------------------------------- - ------------ -- ---- ---------------- -- -- - ------------------- ------- -- ---- ------- ---
结论
在 Express.js 中,GET 请求出现 404 Not Found 错误的原因可能有很多,需要仔细检查代码中的路由定义、路由顺序和静态文件目录定义。如果以上方法都无法解决问题,那么就需要进一步检查代码中的其他问题。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67403ad25ade33eb7232a0d9