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

NestJS集成AdminJS后访问/admin路由出现404错误

NestJS集成AdminJS后访问/admin路由出现404错误

兄弟,我之前也碰到过这个糟心的问题!咱们一步步来排查解决,肯定能搞定:

  • 先查全局路由前缀是否搞鬼
    如果你在main.ts里设置了全局路由前缀(比如app.setGlobalPrefix('api')),那AdminJS的/admin会自动变成/api/admin,这时候直接访问localhost:3000/admin自然会404。
    解决办法也简单:在配置AdminModule的时候加个excludePrefix: true,让它不受全局前缀影响:

    AdminModule.createAdminAsync({
      useFactory: () => ({
        adminJsOptions: {
          rootPath: '/admin',
          resources: [/* 你的实体类 */],
        },
        nestjsOptions: {
          excludePrefix: true, // 关键就是这行!
        },
      }),
    }),
    
  • 再确认AdminJS的配置是否完整
    检查你的AppModule里,有没有正确注册AdminJS的适配器(比如用TypeORM的话,必须注册Database和Resource),还有rootPath是不是明确设成了/admin:

    import * as AdminJS from 'adminjs';
    import { Database, Resource } from '@adminjs/typeorm';
    
    // 这行千万别漏!不然AdminJS识别不了你的数据库实体
    AdminJS.registerAdapter({ Database, Resource });
    
    @Module({
      imports: [
        AdminModule.createAdminAsync({
          useFactory: () => ({
            adminJsOptions: {
              rootPath: '/admin', // 明确指定路由根路径
              resources: [/* 比如你的User、Post这些实体 */],
            },
          }),
        }),
      ],
    })
    export class AppModule {}
    
  • 排查中间件和守卫的冲突
    如果你全局注册了守卫、拦截器或者其他中间件,说不定它们把/admin路径给拦截了。比如全局JWT守卫可能会把未登录的请求直接返回404(有些情况下会误返回404而不是401)。
    这时候要在守卫里把/admin路径排除掉:

    @Injectable()
    export class AuthGuard implements CanActivate {
      canActivate(context: ExecutionContext): boolean {
        const request = context.switchToHttp().getRequest();
        // 让/admin路径跳过权限校验
        if (request.path.startsWith('/admin')) {
          return true;
        }
        // 你的其他权限校验逻辑
        return ...;
      }
    }
    
  • 最后检查版本兼容性
    有时候AdminJS和@adminjs/nestjs的版本和NestJS不匹配也会出问题。比如NestJS 10.x需要搭配@adminjs/nestjs 5.x以上的版本。你可以升级到最新版试试:

    npm install @adminjs/nestjs@latest adminjs@latest
    

先从全局前缀这个最常见的情况查起,大概率能解决!

备注:内容来源于stack exchange,提问作者Yann

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 17:38:16