@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