从 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>
来定义它
我在 .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>