如何将配置传递给 forRoot

How to pass configuration into forRoot

如何将配置对象传递到 AppModule 中的 forRoot()?如果模块中没有constructor,有没有办法访问configService

config.yml:

smtp:
  host: 'smtp.host.com'
  port: 10
  secure: true
  auth:
    user: 'username'
    auth: 'password'
@Module({
  imports: [
    ConfigModule.forRoot({ isGlobal: true }),
    MailModule.forRoot(), // I want to pass configuration here
  ],
})
export class AppModule {}

通常你需要一个像forRootAsync这样的异步注册方法,但是由模块创建者提供这个方法。如果此方法确实存在,您可以使用工厂和 inject 创建类似 class 的提供程序系统,Nest 可以使用 as shown in the database docs 注入该系统。不知道你用的是哪个邮件模块,支持不支持就不好说了

如果没有这种异步注册方法,就无法在 forRoot 中使用 DI。

我安装了 config 包并像这样使用它:

import * as config from 'config';

const smtpConfig = config.get('smtp');

@Module({
  imports: [
    MailModule.forRoot(smtpConfig),
  ],
})
export class AppModule {}