0
点赞
收藏
分享

微信扫一扫

nestjs整合@nestjs-modules-mailer和@nestjs-config以及@nestjs-config和nestjs-config的坑

快乐小码农 2022-02-10 阅读 59

nestjs整合@nestjs-modules-mailer和@nestjs-config以及@nestjs-config和nestjs-config的坑

  • 注意:@nestjs/confignestjs/config看起来像一个库,实际上是两个库,用法也不同
  • @nestjs/config是官方的:(GitHub地址)https://github.com/nestjs/config
  • nestjs/config更像是第三方插件:(GitHub地址)https://github.com/nestjsx/nestjs-config

@nestjs-modules/mailer整合@nestjs/config

  • 新建文件:src/config/email.config.ts,当然名字随便取(又不是java😠)
import { PugAdapter } from '@nestjs-modules/mailer/dist/adapters/pug.adapter';
import { registerAs } from '@nestjs/config';
import { join } from 'path';

export default registerAs('email', () => ({
  transport: {
    host: 'smtp.sina.cn',
    port: 25,
    ignoreTLS: true,
    secure: false,
    auth: {
      user: 'xxx', 
      pass: 'xxx', // xxx是什么你懂的😀
    }
  },
  defaults: {
    from: '"nest-modules" <modules@nestjs.com>',
  },
  template: {
    // 这里注意一下路径, 不然加载的路径是错误的
    dir: join(__dirname, '../templates/email'),
    adapter: new PugAdapter(),
    options: {
      strict: true,
    }
  }
}));
  • app.module.ts中进行配置
import { MailerModule } from '@nestjs-modules/mailer';
import { Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { EmailModule } from './email/email.module';
import EmailConfig from './config/email.config';

@Module({
  imports: [
    EmailModule,
    ConfigModule.forRoot({
      // 不加载env环境变量
      ignoreEnvFile: true,
      
      // 加载我们的邮件配置
      load: [EmailConfig],
    }),
    MailerModule.forRootAsync({
        
      // 特别注意一定要导入, 不导入就报错, 说你没在imports引入
      imports: [ConfigModule],
      useFactory: (config: ConfigService) => {
		// 拿到我们配置的config别名 #registerAs方法
        return config.get('email');
      },
      inject: [ConfigService]
    }),
  ],
  controllers: [],
  providers: [],
})
export class AppModule {}
  • 注意:因为在nest/config中是这样配置的
// 获取配置
ConfigModule.load(resolve(__dirname, 'config', '**/!(*.d).{ts,js}')),

// 邮件配置
MailerModule.forRootAsync({
useFactory: (config: ConfigService) => config.get('email'),
inject: [ConfigService],
}),

@nestjs-modules-mailer插件官方doc解决路径:

https://github.com/CrowdLinker/nestjs-mailer#asynchronous

举报

相关推荐

0 条评论