Edgar-P-yan / node-sms-ru

✉️ SMS.ru phone messaging service's node.js client
https://edgar-p-yan.github.io/node-sms-ru/
MIT License
6 stars 2 forks source link

Проблема с модулем для nestjs #14

Closed nihil-pro closed 11 months ago

nihil-pro commented 2 years ago

Импортирую модуль (пробовал в app.module.ts, и в модуле аутентификации, разницы никакой, ошибка та же)

@Module({
  imports: [
    SMSRuModule.forRoot({ api_id: '***' }),
    UsersModule,
    PassportModule
  ],
  providers: [AuthService, LocalStrategy, LocalSerializer],
  controllers: [AuthController],
  exports: [AuthService]
})
export class AuthModule {}

// auth.service.ts

@Injectable()
export class AuthService {
  constructor(
    private readonly smsRu: SMSRu,
    private readonly userService: UsersService
  ) {}
  ...

и получаю ошибку:

ERROR [ExceptionHandler] Nest can't resolve dependencies of the AuthService (?, UsersService). Please make sure that the argument SMSRu at index [0] is available in the AuthModule context.

Potential solutions:
- If SMSRu is a provider, is it part of the current AuthModule?
- If SMSRu is exported from a separate @Module, is that module imported within AuthModule?
  @Module({
    imports: [ /* the Module containing SMSRu */ ]
  })
ViktorSel commented 1 year ago

import { SMSRu } from 'node-sms-ru';

@Module({ imports: [ SMSRuModule.forRoot({ api_id: '*' }), UsersModule, PassportModule ], providers: [AuthService, LocalStrategy, LocalSerializer, SMSRu**], controllers: [AuthController], exports: [AuthService] }) export class AuthModule {}

soorq commented 11 months ago

Проблема возникает далее с api_id

@Global()
@Module({
  imports: [
    forwardRef(() => UserModule),
    ConfigModule.forRoot({ isGlobal: true }),
    TypeOrmModule.forFeature([Token]),
    SMSRuModule.forRoot({ api_id: 'some' }),
    MailerModule.forRootAsync({
      useFactory: MailerConfig,
      inject: [ConfigService],
    }),
  ],
  providers: [MailService, SMSRu],
  exports: [MailService],
})
export class MailModule {}

И если при async брать, то тоже также, с env файла не вытягивает, да какой .env там не идет если даже в тупую, в лобешник дать ему

{
  "data" : 
    [
       {
        SMSRu {
          _params: {
            baseUrl: 'https://sms.ru/',
            api_id: undefined,
        },
      }
    }
  ],
}

В сервис файле тестил, что под апи кей лежит

 import { SMSRu } from 'node-sms-ru';
 export class MailService {
   constructor(
    private readonly sms: SMSRu
   ) {}
 }
(alias) class SMSRu
import SMSRu
Edgar-P-yan commented 11 months ago

@soorq Понял, я посмотрю на своей стороне, но будет круто если сделаете маленький репо где проблема точно воспроизводится, чтобы быстрее смог пофиксить

soorq commented 11 months ago

@Edgar-P-yan , https://github.com/soorq/Error__Sms

Edgar-P-yan commented 11 months ago

@soorq Спасибо за тестовое репо! Ошибку пофиксил, в новой версии уже:

npm i node-sms-ru@^0.2.0

yarn add node-sms-ru@^0.2.0

Жду подтверждения о фиксе и закрываю тред :)

soorq commented 11 months ago
@Global()
@Module({
  imports: [
    forwardRef(() => UserModule),
    ConfigModule.forRoot({ isGlobal: true }),
    TypeOrmModule.forFeature([Token]),
    SMSRuModule.forRoot({ api_id: 'some' }),
    MailerModule.forRootAsync({
      useFactory: MailerConfig,
      inject: [ConfigService],
    }),
  ],
  providers: [MailService],
  exports: [MailService],
})
export class MailModule {}

Все работает, спасибо за быстродействие! Удачи)