TIL

23/12/27 TIL __ nestJs 환경 @Roles() 에러

GABOJOK 2023. 12. 28. 00:09

 

 

현재 개인 프로젝트를 진행중인데, 주제는 공연 예매 사이트 이다. 

일반 고객층과, 공연을 등록 관리하는 층으로 유저의 권한을 나누어 관리하기 위해 @Roles( )를 이용해서 가드를 했는데,

이부분에서 에러를 만나 많은 시간을 할애했다. 

 

 

 

문제 

 

롤가드가 제대로 동작하지 않는다.

컴파일 단계에서 에러가 나오고 있었고, 강의 코드와 비교했을때 다른게 없었다. 

 

roles.guard.ts

roles.decorator.ts

concert.controller.ts

concert.entities.ts

concert.dto.ts 

 

이렇게 연관있다고 생각한 파일들을 강의자료 코드와 비교하며 틀린점을 찾으려 했지만

정말 다를게 없었다.

ERROR

Unable to resolve signature of class decorator when called as an expression. This expression is not callable. Type 'void' has no call signatures.

 

 

이런 에러메세지가 나와서 구글링 해봤지만, 원하는 결과를 찾을 수 없었다. 

멘붕이였지만, 방법은 없어서 계속 찾다가,

modules 파일을 비교해 봤다. 

 

ㅎ......

컴퓨터는 거짓말을 하지 않는다.

 

concert.modules.ts 파일에  Concert를 typeOrmModule에 import 하지 않은것...

import { Module } from '@nestjs/common';
import { ConcertService } from './concert.service';
import { ConcertController } from './concert.controller';
import { TypeOrmModule } from '@nestjs/typeorm';
import { Concert } from './entities/concert.entities';
import { JwtModule } from '@nestjs/jwt';
import { ConfigService } from '@nestjs/config';

@Module({
  imports: [
    JwtModule.registerAsync({
      useFactory: (config: ConfigService) => ({
        secret: config.get<string>('JWT_SECRET_KEY'),
      }),
      inject: [ConfigService],
    }),
    TypeOrmModule.forFeature([Concert]),
  ],
  providers: [ConcertService],
  controllers: [ConcertController],
})
export class ConcertModule {}

 

 

 

 

이 외에도 많은 헛발질이 있었지만, 사실 이부분에 문제를 만나 다른방법으로 접근하다 만난 에러들이기에, 

굳이 정리하지 않는다. ㅎㅎ

 

 

 

네스트로 넘어오고 나서 설정파일에 대한 부분이 아직 익숙하지 않아 자꾸만 빼먹게 되는것 같다. 

이제는 잘 챙겨 넣어야겠담.