Nest JS Микросервис не создается при импорте DatabaseModule в App.Module - PullRequest
0 голосов
/ 20 марта 2020

Я создаю микросервис с Nest JS с модулем DatabaseModule, который подключается к двум базам данных. Я импортирую DatabaseModule в массив импорта AppModule.

Когда я импортирую DatabaseModule в AppModule, микросервис перестает создавать экземпляры. Когда я не включаю импорт DatabaseModule, Microservice создает и выдает «Microservice прослушивает!» в терминал.

А как насчет DatabaseModule, препятствующего созданию микросервиса методом createMicroservice()? Любые предложения?

Вся помощь очень ценится!

main.ts

import { Transport, MicroserviceOptions } from '@nestjs/microservices';
import { AppModule } from './app.module';

async function bootstrap() {

  const app = await NestFactory.createMicroservice<MicroserviceOptions>(AppModule, {
      transport: Transport.TCP,
    }
  );
  await app.listen(async () => console.log('Microservice is listening!'));
}

bootstrap();

app.module.ts

import { Module } from '@nestjs/common';
import 'dotenv/config';

import { AppController } from './app.controller';
import { AppService } from './app.service';
import { DatabaseModule } from './database/database.module';

@Module({
  imports: [
    DatabaseModule
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {
}

database.module .ts

import { TypeOrmModule } from '@nestjs/typeorm';
import { MongooseModule } from '@nestjs/mongoose'; 

import { Token } from '../token/token.entity';
import { TokenService } from '../token/token.service';
import { TokenModule } from '../token/token.module';
import { NotificationModule } from '../notification/notification.module';
import { NotificationService } from '../notification/notification.service';

const dbUsername = process.env.DB_USER;
const dbPassword = process.env.DB_PASS;
const dbName = process.env.DB_NAME;
const dbHost = process.env.DB_HOST;

@Module({
    imports: [
        MongooseModule.forRootAsync({
            imports: [NotificationModule],
            useFactory: () => ({
                uri: 'mongodb://localhost:27017/notifications-app'
            }),
            inject: [NotificationService]
        }),
        TypeOrmModule.forRootAsync({
            imports: [TokenModule],
            useFactory: () => ({
                type: 'mysql',
                host: dbHost,
                port: 3306,
                username: dbUsername,
                password: dbPassword,
                database: dbName,
                entities: [Token],
                synchronize: true,
                insecureAuth: true,
                logging: true,
            }),
            inject: [TokenService]
        }),
        TypeOrmModule.forFeature([Token]),
    ],
})
export class DatabaseModule { }

...