You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Express路由失效:请求无法访问question路由始终跳转首页

问题原因及解决方案

核心问题分析

请求/question时触发index路由而非预期的question路由,主要有以下几类原因:

1. 路由挂载实例搞混(最可能)

你贴出的app.js代码里路由挂载逻辑是正确的:

app.use('/question', questionRouter);
app.use('/', indexRouter);

但如果实际代码中把两个Router实例的挂载路径写反(比如写成app.use('/question', indexRouter)和app.use('/', questionRouter)),就会导致请求/question时进入indexRouter的根路由(router.get('/', index.index)),从而打印index2 page。

2. questionRouter路由未生效

如果routes/question.js存在以下问题,会导致路由无法匹配请求:

  • 路由方法写错(比如用router.post('/'...)而非router.get('/'...));
  • 控制器引入错误(比如写成let question = require('../controllers/index'),导致question.question不存在);
  • Router实例未正确导出(比如写成module.exports = indexRouter而非自身的router)。

3. 控制器代码抛出异常

你的controllers/question.js中写了return response;,但response是未定义变量,执行时会抛出ReferenceError。若项目未配置错误处理中间件,Express可能跳过该路由继续向下执行,但这种情况通常返回500错误,而非触发index路由——除非有额外重定向逻辑将请求转到/。

解决方案

按以下步骤排查修复:

  1. 核对app.js路由挂载:确保app.use('/question', questionRouter)在app.use('/', indexRouter)之前,且两个Router实例未搞混;
  2. 检查questionRouter定义:确认routes/question.js中路由方法为router.get('/', question.question),控制器引入路径正确,且module.exports = router;
  3. 修正控制器代码:将controllers/question.js里的return response;改为正确的响应语句,例如:
    exports.question = function (req, res, next) {
        console.log('question page');
        res.send('question page'); // 或res.render('question')等符合业务逻辑的响应
    }
    

内容的提问来源于stack exchange,提问作者Manu Chadha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 21:56:04