Express路由404问题求助:/users/cool路径无法访问原因排查
问题原因
你的路由挂载顺序和匹配逻辑出了问题:
- Express会按
app.use的书写顺序依次处理请求。你先挂载了app.use('/users', usersRouter),它会拦截所有以/users开头的请求(包括/users/cool)。 usersRouter里只定义了对应/users的/路径,当请求/users/cool时,usersRouter找不到匹配的路由,会直接返回404,根本轮不到后面的app.use('/users/cool', coolRouter)执行。
修复方案
有两种可行的解决方式:
方式一:调整挂载顺序
把coolRouter的挂载代码放在usersRouter前面,让/users/cool的请求先被匹配处理:
// app.js 中修改顺序 app.use('/', indexRouter); app.use('/users/cool', coolRouter); app.use('/users', usersRouter);
方式二:嵌套路由(更符合层级逻辑)
直接在usersRouter内部挂载coolRouter,让路由层级更清晰:
// routes/users.js var express = require('express'); var router = express.Router(); var coolRouter = require('./cool'); /* GET users listing. */ router.get('/', function(req, res, next) { res.send('respond with a resource'); }); // 将coolRouter挂载到/users/cool路径下 router.use('/cool', coolRouter); module.exports = router;
同时删除app.js里的app.use('/users/cool', coolRouter)这一行。
内容的提问来源于stack exchange,提问作者sehrguey
相关产品推荐
相关产品推荐

