I want to create an MQTT conection based on Configuration module in my Nest.js app. I am using very old npm package: https://github.com/microud/nest-mqtt . I updated necessary dependencies and now I try to use it. However i am experiencing this issue:
Error: Nest cant resolve dependencies of the MQTT_OPTION_PROVIDER (?). Please make sure that the argument ConfigurationService at index [0] is available in the MqttModule context.
Here is how my app.module looks:
@Module({
imports: [ConfigurationModule, MySQLModule, MQTTModule],
controllers: [],
providers: [],
})
export class AppModule {}
config.module.ts
@Module({
imports: [ConfigModule.forRoot()],
providers: [ConfigurationService],
exports: [ConfigurationService],
})
export class ConfigurationModule {}
mqtt.module.ts
const MqttGlobalConnection = MqttModule.forRootAsync({
useFactory: (config: ConfigurationService) => ({
logger: {
useValue: new CustomLogger('MQTT'),
},
...config.MQTT_GLOBAL_CONNECTION,
}),
inject: [ConfigurationService],
imports: [ConfigurationModule],
});
@Module({
imports: [ConfigurationModule, MqttGlobalConnection],
})
export class MQTTModule {}
Is something incorrect in this pretty simple configuration or the error is in the nest-mqtt library.
PS
When i changed forRootAsync into forRoot everything seems to work, but looks a little bit worse in my opinion:
const MqttGlobalConnection = MqttModule.forRoot({
logger: { useValue: new CustomLogger('MQTT') },
...new ConfigurationService(new ConfigService()).MQTT_GLOBAL_CONNECTION,
});