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

TypeScript + Express项目路由失效,访问/sessions返回Cannot GET错误

问题原因

你的路由匹配规则重复拼接了路径前缀,导致实际可访问的路由和预期不符:

  1. SessionController 中定义了控制器根路径 public path = '/sessions'
  2. 注册路由时你又传入了 this.path 作为路由路径:this.router.get(this.path, this.getSession)
  3. App 类注册控制器时,执行的是 this.app.use(controller.path, controller.router),相当于给该控制器下所有路由额外加了一层 /sessions 前缀

三者叠加后,你写的 GET 接口实际可访问路径为 /sessions/sessions,自然访问 /sessions 会返回 404 错误。你可以先尝试访问 GET http://localhost:3999/sessions/sessions,如果能拿到 session 数据就可以确认是该问题。

解决方案

按照控制器模块化的设计逻辑调整路由注册规则即可,把 SessionController 里 intializeRoutes 方法的路由路径改为根相对路径:

public intializeRoutes() {
  console.log("Route initialised");
  // 把原来的 this.path 替换为 '/'
  this.router.get('/', this.getSession);
}

调整后,控制器根路径 /sessions 拼接路由路径 /,最终匹配的路径就是你预期的 /sessions,访问即可触发 getSession 方法返回数据。

补充注意项

你贴出的 controller.interface.ts 存在一处笔误:定义的接口名为 IController,但最后导出写的是 export default Controller,如果本地代码也是这个写法需要修正为 export default IController,否则编译阶段就会报错。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:36:04