Express中router.route()失效,访问路由返回Cannot GET /test如何解决?
问题根因
你创建了express.Router实例并配置了路由规则,但没有将该router挂载到主应用实例app上,Express无法识别router中定义的路由,因此返回Cannot GET /test错误。
修复方案
在router.route定义完成后、app.listen之前,添加一行代码将router挂载到app上:
// 第一个参数为路由前缀,传'/'代表router下的路由直接挂载在根路径下 app.use('/', router)
修复后完整可运行代码
const express = require('express'); const app = express(); const router = express.Router(); router.route('/test').get(function (req, res) { res.send('You have reached localhost:9000/test'); }); // 挂载router到主应用 app.use('/', router); app.listen(9000, () => { console.log('Running on port 9000'); });
补充说明
- 如果你挂载router时指定了自定义前缀,例如
app.use('/api', router),则对应的访问地址需要修改为localhost:9000/api/test - 路由处理函数中
res.send执行后如果没有后续中间件需要触发,不需要额外调用next(),避免产生不必要的逻辑冲突
内容的提问来源于stack exchange,提问作者QZAK
相关产品推荐
相关产品推荐

