nestJs 处理环境变量

Posted

技术标签:

【中文标题】nestJs 处理环境变量【英文标题】:nestJs handle env variables 【发布时间】:2019-09-29 04:47:56 【问题描述】:

如文档here 中所述,我将在nestjs 中配置enivrement 变量:

在我的服务构造函数中,我得到了 env 文件路径

import * as dotenv from 'dotenv';
import * as fs from 'fs';

export class ConfigService 
  private readonly envConfig:  [key: string]: string ;

  constructor(filePath: string) 
    this.envConfig = dotenv.parse(fs.readFileSync(filePath))
    console.log(this.envConfig)
  

  get(key: string): string 
    return this.envConfig[key];
  

然后在配置模块中设置配置服务

  providers: [
    
      provide: ConfigService,
      useValue: new ConfigService(`$process.env.NODE_ENV.env`),
    ,
  ],
  exports: [ConfigService],
)

当前行为

实际上我得到了未定义的 process.env.NODE_ENV 值

预期行为

在 process.env.NODE_ENV 中获取环境变量路径

【问题讨论】:

提供filePath你想要的价值。比如my_test.env,那么你要设置你的NODE_ENVmy_test,我们设置NODE_ENV环境变量值的方法太多了,简单的方法NODE_ENV=my_test npm run start Defining Node environment in Nest.js的可能重复 也看到这个答案***.com/a/54364907/4694994 【参考方案1】:

我也遇到过同样的问题。通过在文件main.ts 中手动导入dotenv 来轻松修复它,就像在下面的示例中一样(请确保您已经安装了dotenv):

import  NestFactory  from '@nestjs/core';
import  config  from 'dotenv';
config();
// all rest of your code

希望对您有所帮助!

【讨论】:

以上是关于nestJs 处理环境变量的主要内容,如果未能解决你的问题,请参考以下文章

NestJS 环境变量未定义

在nestjs中使用类验证器验证环境变量?

NestJs:无法读取模块文件中的环境变量但能够读取服务文件?

.env 文件中的变量的 nestjs 问题

如何对一个扩展了抽象类的类进行单元测试,读取环境变量。

使用批处理命令设置环境变量