Nest.js 控制器路由添加后为什么无法访问?

皇甫雯雯 阅读 35

刚用Nest.js写了个用户控制器,按文档写了@Get(‘/users’)路由,但访问路径一直报404。已经确认模块导入选项里加了UsersModule,启动日志也没错误提示,到底哪里漏了?


// users.controller.ts
import { Controller, Get } from '@nestjs/common';

@Controller('users')
export class UsersController {
  @Get()
  findAll() {
    return 'test';
  }
}

在AppModule里确实导入了:
@Module({ imports: [UsersModule] })
但访问localhost:3000/users就是得不到响应,路由好像没被注册进去

我来解答 赞 7 收藏
二维码
手机扫码查看
2 条解答
兴慧🍀
省事的话,先检查UsersModule有没有正确导入UsersController。你的问题八成是UsersModule里没把控制器加到controllers数组里。

@Module({
controllers: [UsersController],
})
export class UsersModule {}
点赞 5
2026-02-09 19:09
晓曼酱~
这个问题我之前也踩过坑,确实是挺让人头疼的。先看看你的 UsersModule 有没有正确声明控制器。

最常见的问题是 @Controller 没有在 UsersModule 里被注册进去。你得确保在 UsersModule@Module 装饰器里,把 UsersController 加到了 controllers 数组中。

比如这样:


import { Module } from '@nestjs/common';
import { UsersController } from './users.controller';

@Module({
controllers: [UsersController], // 这里一定要加上
})
export class UsersModule {}


这是我自己的血泪教训,当时也是写了路由却一直 404,最后发现是忘了注册控制器。检查一下这个点,应该就能解决了。

另外再确认一下,@Controller('users')@Get() 都是正确的,最终路径应该是 /users,拼起来没错的话就八九不离十了。
点赞 7
2026-02-01 03:17