从 nestjs 中的 .env 文件中读取端口号

Reading PORT number from .env file in nestjs

我在 .env 文件中定义了详细信息。下面是我的代码。

import { Module } from '@nestjs/common';
import { MailService } from './mail.service';
import { MailController } from './mail.controller';
import { MailerModule } from '@nestjs-modules/mailer';
import { HandlebarsAdapter}  from '@nestjs-modules/mailer/dist/adapters/handlebars.adapter';
import { join } from 'path';


@Module({
  imports:[
     MailerModule.forRoot({
      transport:{
        host: process.env.SMTP_HOST,
        port: 1025,
        ignoreTLS: true,
        secure: false,
        auth:{
          user:'shruti.sharma@infosys.com',
          pass:'Ddixit90@@',
        },
      },
      defaults:{
           from: '"No Reply" <no-reply@localhost>',
      },
      template:{
        dir:join(__dirname,'templates'),
        adapter: new HandlebarsAdapter(),
        options:{
          strict:false,
        },
      }
     }
      
     )
  ],
  controllers: [MailController],
  providers: [MailService],
  exports:[MailService]
})
export class MailModule {}

host: process.env.SMTP_HOST 工作正常。但是当我写 process.env.SMTP_PORT 时,它说你不能将字符串分配给数字。

当我写 parseInt(process.env.SMTP_PORT) 时,它仍然无法正常工作。如何从 .env 文件

分配 port

port: +process.env.SMTP_PORT 应该可以将其转换为数字。如果有什么不同,也许可以分享您遇到的错误。

另一种方法是使用 MailerModule 的配置服务并使用工厂。这是一个示例实现:

MailerModule.forRootAsync({
            useFactory: async (config: ConfigService) => ({
                transport: {
                    host: process.env.SMTP_HOST,
                    port: 1025,
                    ignoreTLS: true,
                    secure: false,
                    auth: {
                        user: "shruti.sharma@infosys.com",
                        pass: "Ddixit90@@",
                    },
                },
                defaults: {
                    from: '"No Reply" <no-reply@localhost>',
                },
                template: {
                    dir: join(__dirname, "templates"),
                    adapter: new HandlebarsAdapter(),
                    options: {
                        strict: false,
                    },
                },
            }),
            inject: [ConfigService],
        }),

这样一来,config.get就可以通过属性来判断类型了。否则你可以用 config.get<number>

来定义它