• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

InjectRepository 오류

22.08.10 14:22 작성 조회수 1.64k

0

@Injectable()
export class UsersService {
constructor(
@InjectRepository(Users)
private usersRepository: Repository<Users>,
@InjectRepository(Workspaces)
private workspacesRepository: Repository<Workspaces>,
//@InjectRepository(ChannelMembers)
//private channelMembersRepository: Repository<ChannelMembers>, //여기 추가하면 user.module.ts의 import에도 넣어줘야한다

/*
@InjectRepository(WorkspaceMembers)
private workspaceMembersRepository: Repository<WorkspaceMembers>, //여기 추가하면 user.module.ts의 import에도 넣어줘야한다
*/ private dataSource: DataSource,
) {}

users.service.ts에

TypeORM을 사용하기 위하여 위와 같이 코딩을 하면

 

ERROR [ExceptionHandler] Nest can't resolve dependencies of the UsersService (UsersRepository, ?, DataSource). Please make sure that the argument WorkspacesRepository at index [1] is available in the AppModule context.

Potential solutions:

- If WorkspacesRepository is a provider, is it part of the current AppModule?

- If WorkspacesRepository is exported from a separate @Module, is that module imported within AppModule?

  @Module({

    imports: [ /* the Module containing WorkspacesRepository */ ]

  })

 

 

이런 에러가 납니다.

신기한건 Users는 나지 않고

Workspaces, 채널멤버, 워크스페이스 멤버등만 에러가 납니다.

 

강의에서 해당 에러가 날때는 module을 살펴보라고 하셨지만

 

users.module.ts

@Module({
imports: [
TypeOrmModule.forFeature([
Users,
WorkspaceMembers,
ChannelMembers,
Workspaces,
]),
],
providers: [UsersService],
controllers: [UsersController],
})
export class UsersModule {}

import는 시켰구요

 

app.module.ts에도


@Module({
imports: [
TypeOrmModule.forFeature([Users]),
ConfigModule.forRoot({
isGlobal: true,
//아래 load는 aws같은데서 config를 받아올때 하는거다
//load: [getEnv],
}),
AuthModule,
UsersModule,
WorkspacesModule,
ChannelsModule,
DmsModule,
TypeOrmModule.forRootAsync({
inject: [ConfigService],
useFactory: (configService: ConfigService) => {
return {
type: 'mysql',
host: 'localhost',
port: 3306,

User모듈과 workspaces모듈을 넣었습니다.ㅠㅠㅠㅠ

 

 

 

 

 

또 재미있는건

같은 코딩을 

workspaces.service.ts에 했을때는 에러가 나지 않는다는 것입니다.

 

workspaces.service.ts

@Injectable()
export class WorkspacesService {
constructor(
@InjectRepository(Users)
private usersRepository: Repository<Users>,
@InjectRepository(Workspaces)
private workspacesRepository: Repository<Workspaces>,
@InjectRepository(ChannelMembers)
private channelMembersRepository: Repository<ChannelMembers>, //여기 추가하면 user.module.ts의 import에도 넣어줘야한다
private dataSource: DataSource,
) {}
getUsers() {}

 

workspaces.module.ts

@Module({
imports: [
TypeOrmModule.forFeature([
Users,
WorkspaceMembers,
ChannelMembers,
Workspaces,
]),
],
providers: [WorkspacesService],
controllers: [WorkspacesController],
})
export class WorkspacesModule {}

 

 

 

분명 무언가가 다른것같은데

저는 아무리 찾아도 나오지 않습니다.ㅠㅠㅠㅠ

 

해결방법 키워드를 주시면  감사드리겠습니다.ㅠㅠㅠ

답변 1

답변을 작성해보세요.

0

app.module.ts에 TypeORMModule.forFeature([Users])만 되어있는데 여기에 Workspaces도 넣어보세요.