#Create custom module.

12 messages · Page 1 of 1 (latest)

opaque dirge
#

Guys, i know that question like asked about 100k+ times, but i feels like i did everything right and thats not working for me.

typeorm.module.ts

@Module({
  providers: [
        {
            provide: typeorm.DataSource,
            async useFactory(configService: ConfigService<EnvironmentVariables>)  {
                const databaseUrl = configService.get('DATABASE_URL')
                const connection = await createAppDataSource(databaseUrl)
                return connection
            },
            inject: [ConfigService],
        },
    ],
    exports: [typeorm.DataSource],
})
export class TypeormModule {}

repositories.module.ts

@Module({
  imports: [TypeormModule],
  providers: [UsersRepository],
})
export class RepositoriesModule {}

users.repository.ts

@Injectable()
export class UsersRepository extends UsersRepositoryTypeorm {
    constructor(@Inject() typeorm: typeorm.DataSource) {
        super(typeorm)
    }
}

app.module.ts

@Module({
    imports: [
        ConfigModule.forRoot({
            envFilePath: resolve(__dirname, '..', '.env'),
            expandVariables: true,
            isGlobal: true,
        }),
        AuthModule,
        TypeormModule,
        RepositoriesModule,
    ],
#

But

[Nest] 338792  - 05/02/2023, 7:17:59 PM   ERROR [ExceptionHandler] Nest can't resolve dependencies of the UsersRepository (?). Please make sure that the argument dependency at index [0] is available in the RepositoriesModule context.

Potential solutions:
- Is RepositoriesModule a valid NestJS module?
- If dependency is a provider, is it part of the current RepositoriesModule?
- If dependency is exported from a separate @Module, is that module imported within RepositoriesModule?
  @Module({
    imports: [ /* the Module containing dependency */ ]
  })
slow cradle
#

Don't use @Inject() without providing an injection token

opaque dirge
#

Anyways even

constructor(private readonly usersService: UsersRepository) {
    }

Not working.

slow cradle
#

Error?

opaque dirge
#
 ERROR [ExceptionHandler] Nest can't resolve dependencies of the DiscordService (?). Please make sure that the argument UsersRepository at index [0] is available in the DiscordModule context.

Potential solutions:
- Is DiscordModule a valid NestJS module?
- If UsersRepository is a provider, is it part of the current DiscordModule?
- If UsersRepository is exported from a separate @Module, is that module imported within DiscordModule?
  @Module({
    imports: [ /* the Module containing UsersRepository */ ]
  })
#

But it a bit out of code i shared, there i importing repositories module and trying to use UsersRepository from it.

#
@Module({
    imports: [RepositoriesModule],
  controllers: [DiscordController],
  providers: [DiscordService],
})
export class DiscordModule {}
@Injectable()
export class DiscordService {
    constructor(private readonly usersService: UsersRepository) {
    }
#

Got it.

#

i forgot to use exports in RepositoriesModule

#

Damn, that DI things sometimes makes me mad.