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

最简Express测试路由返回404错误问题求助

问题排查与解决

核心原因

你在app.js中定义了测试用的/test路由,但没有将对应的Router实例挂载到Express应用上,导致Express无法识别这个路由请求,最终返回404。

看你app.js里的这段代码:

// For testing purpose
const routes = express.Router();
routes.get('/test', async(req, res, next) => {
    console.log("test");
    res.send("test");
});

你创建了routes这个Router并添加了/test接口,但后续没有通过app.use()把它注册到应用中,所以这个路由完全没被加入到Express的路由匹配系统里。

解决方案

在app.js中,把测试路由的Router挂载到Express应用上,注意要放在404中间件之前(否则会被404拦截)。

修改app.js,在注册完业务路由之后、404中间件之前添加以下代码:

// 挂载测试路由
app.use('/', routes);

如果希望给测试路由加上前缀(比如/api/test),可以改成:

app.use('/api', routes);

此时访问地址就变成http://localhost:4000/api/test。

额外检查点

为了确保万无一失,你还可以确认以下几点:

  • 检查.env文件中的NODE_LOCAL_PORT是否设置为4000,HOST是否为localhost,避免访问地址端口/主机错误。
  • 如果PUBLIC_URL环境变量有值(比如/my-app),业务路由会挂载在/my-app/api/...下,但测试路由因为是直接挂载到/,所以访问http://localhost:4000/test是正确的,不需要加PUBLIC_URL前缀。
  • 确保所有路由注册都在404中间件app.use((req,res,next) => { res.sendStatus(404); });之前,否则会被直接拦截返回404。

按照这个修改后,重启服务再访问http://localhost:4000/test应该就能正常返回"test"了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 18:57:26