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

Express.js Router在简单服务场景下失效,请求返回404错误求助

解决express.Router()导致的404错误问题

嘿,我一眼就揪出你遇到的问题啦!这是个典型的路由嵌套路径匹配的小坑,咱们一步步把它搞定:

问题根源

你在app.js里已经把testserv路由挂载到了/test路径下:

app.use('/test',testserv);

但在test.js里,又给路由额外加了一层/test:

router.post('/test', function (req, res) {
  res.send('Some text ...');
});

这就导致实际生效的路由是POST /test/test,而你大概率是在请求POST /test,自然会返回404啦!

两种解决办法

方法一:修改路由文件(推荐)

把test.js里的路由改成根路径,让它继承挂载时的/test前缀:

var express = require('express');
var router = express.Router();

// 去掉前面的/test,用根路径匹配
router.post('/', function (req, res) {
  res.send('Some text ...');
});

module.exports = router;

现在你请求POST /test就能正常收到返回内容了。

方法二:调整挂载路径

如果想保留test.js里的/test路由,可以把app.js里的挂载路径改成根路径:

// 把/test改成/,这样路由就变成POST /test
app.use('/',testserv);

不过这种方法不太推荐,后续这个路由文件加新路由时,容易和全局路由冲突。

额外测试小技巧

如果想验证GET请求是否正常,也可以在test.js里加个GET路由试试:

router.get('/', function (req, res) {
  res.send('GET请求也能正常响应啦!');
});

然后访问http://localhost:9000/test就能看到效果啦。

内容的提问来源于stack exchange,提问作者Dariusz Szymczak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:24:38