NestJs不读取环境变量 [英] NestJs not reading environmental variables
本文介绍了NestJs不读取环境变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我按照Nestdocumentation创建配置,但它不起作用
app.module e.ts
@Module({
imports: [
ConfigModule.forRoot({ isGlobal: true }),
TypeOrmModule.forRoot(config),
AuthModule,
UsersModule,
MailModule,
CloudinaryModule,
],
controllers: [AppController],
providers: [AppService],
})
.env
文件位于src文件夹
mail.module e.ts
@Module({
imports: [
MailerModule.forRoot({
transport: {
service: 'Gmail',
auth: {
user: process.env.MAIL_USER,
pass: process.env.MAIL_PASS,
},
},
}),
],
但当我运行应用程序时,其未定义的我的键值对也在那里。
推荐答案
问题在于,ConfigModule的环境变量仅在运行时可用,而在nestjs初始状态下不可用。
若要允许在初始化nestjs后获取.env,您可以在MailerModule中使用异步配置。
mail.config.ts
export class MailerConfig implements MailerOptionsFactory {
createMailerOptions(): MailerOptions | Promise<MailerOptions> {
console.log(process.env.MAIL_USER); // should have value
return {
transport: {
service: 'Gmail',
auth: {
user: process.env.MAIL_USER,
pass: process.env.MAIL_PASS,
},
},
};
}
}
mail.module e.ts
console.log(process.env.MAIL_USER); // undefined
@Module({
imports: [
MailerModule.forRootAsync({
useClass: MailerConfig,
}),
],
})
export class MailModule {}
您也可以在不需要类的情况下使用useFactory
,这里我想对.env进行控制台。记录.env供您检查,所以我使用了config类。
这篇关于NestJs不读取环境变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文