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

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

从年份上来看,早期没有config配置插件时,应该都用的时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],
}),

它不需要imports就可以run了,导致我使用@nest/config时,卡了半天(看了@nest/config官方文档nest/config文档都没解决),最后解决办法是查看了@nestjs-modules-mailer的GitHub官方Doc才解决的

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

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

更多@nest/config用法推荐查看官网教程,比如yaml配置环境变量…这种方便开发的配置还是有必要学习的

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值