typescript - 如何正确设置 NestJS 中的配置?

标签 typescript nestjs nestjs-config

我正在使用 nest-modules/mailer 发送电子邮件,但在 MailerModule 的配置设置过程中遇到一些问题。

(1) 之前,我在 main.ts 中的配置中使用原始 dotenv 包,如下所示:

dotenv.config({
  path: 'src/config/config.env',
});
    

但我无法将配置分配给 app.module.ts 中的 MailerModule

(2) 然后我尝试使用 @nesjs/config 设置配置,app.module.ts 如下所示:

import config from 'src/config/config';

@Module({
  controllers: [
    //...
  ],
  providers: [
   //...
 ],
  imports: [
    HttpModule,
    ConfigModule.forRoot({
      load: [config]
    }),
    MailerModule.forRoot({
      transport: {
        ignoreTLS: true,
        secure: false, // true for 465, false for other ports
        host: process.env.EMAIL_HOST,
        port: process.env.EMAIL_PORT,
        auth: {
          user: process.env.EMAILDEV_INCOMING_USER,
          pass: process.env.EMAILDEV_INCOMING_PWD 
        },
      },
      defaults: {
        from: `'nest-modules' ${process.env.EMAILDEV_INCOMING_}`, // outgoing email ID
      },
      template: {
     
      },
    })
  ]
})
export class AppModule implements NestModule {
 //...
}

所以我无法使用 configServiceprocess.env.* 加载 MailerModule 的配置。

我应该如何解决这个问题?

最佳答案

我在现阶段找到了如何正确解决这个问题的方法:

异步加载EmailModule(以及其他需要使用配置的内容)。

imports: [
    HttpModule,
    MailerModule.forRootAsync({
      useFactory: async () => {
        return {
          transport: {
            ignoreTLS: true,
            secure: false, // true for 465, false for other ports
            host: process.env.EMAIL_HOST,
            port: process.env.EMAIL_PORT,
            auth: {
              user: process.env.EMAILDEV_INCOMING_USER, // generated ethereal user
              pass: process.env.EMAILDEV_INCOMING_PWD // generated ethereal password
            },
          },
          defaults: {
            from: `'nest-modules' ${process.env.EMAILDEV_INCOMING_}`, // outgoing email ID
          },
          template: {
            dir: process.cwd() + '/src/shared/static/views',
            adapter: new HandlebarsAdapter(),
            options: {
              strict: true,
            },
          },
        }
      }
    })
  ]

关于typescript - 如何正确设置 NestJS 中的配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62846785/

相关文章:

typescript - 如何指定在 TypeScript 中定义为对象文字的箭头函数的类型?

jquery - 如何将具有共享依赖项的多个 TypeScript 文件编译为单个 JavaScript 文件?

mongodb - TypeOrm findOne 抛出 'Argument passed in must be a single String of 12 bytes or a string of 24 hex characters'

nestjs - 如何在 Nestjs 中设置默认时区?

typescript - Nest.js 无法解析依赖项

swagger - 请求正文未在 Nest.js + Swagger 中显示

node.js - TypeScript 全局模块声明

javascript - 如果单击子angular2,如何停止父请求

javascript - 为什么白名单不会因错误的模型 NestJs 而出错

express - NestJS - 如何使用 TypeOrm 正确更新