使用NestJS配置模块管理环境变量
环境变量提供有关进程运行环境的信息。它们配置服务器端口和数据库连接,隐藏 API 密钥等敏感数据等等。
使用NestJS,NestJS 读取环境变量的方式与 NodeJS 的标准 dotenv 包不同。使用NestJSNestJS 配置模块让您只需几个步骤即可管理环境变量。
推荐:什么是Linux显示管理器
第 1 步:安装依赖项
NestJS 提供了一个专门的 @nestjs/配置 使用的包 dotenv 包在引擎盖下。 这个零依赖包从一个 .env 归档到 进程.env. process.env 对象是一个在运行时注入的全局变量,供您的应用程序使用。
通过运行安装 NestJS 配置包:
npm install @nestjs/config
NestJS 配置包通过向应用程序公开配置模块和配置服务来工作。 配置模块指定 .env 提交要阅读的应用程序。 同时,配置服务暴露了里面的信息 .env 文件到应用程序的其余部分。
第 2 步:创建 ENV 文件
将环境变量存储在文件中可以让您轻松地从任何语言、跨不同操作系统访问它们。 您可以对这些进行版本控制 .env 文件,因此它们增加了项目的可移植性并可以缓解调试问题。
NestJS 创建 .env 文件的方法不同于官方的 dotenv 推荐。 根据 dotenv 文档,您不应在应用程序中创建多个 .env 文件。 NestJS 允许您创建多个具有不同名称的 .env 文件。
作为一种好的做法,您应该始终在项目的根目录中创建 .env 文件并将它们包含在您的 .gitignore 文件。
没有特殊的方法可以创建 .env 文件——只需使用普通文本编辑器创建和编辑它们——但它们必须以 .env 开头。 例如, .env.development.
第 3 步:设置配置模块
按照以下步骤全局设置您的配置模块并指定 .env 路径:
- 在项目的根模块中(app.modue.ts) 应用程序.modue.ts) 文件,导入 ConfigModule 配置模块 从 @nestjs/config.
- 添加 ConfigModule 配置模块 给你的 imports 导入 数组并调用 forRoot 方法就可以了。
- 将配置对象传递给 forRoot 方法,用 isGlobal 财产 true. 此选项通过应用程序中的其他模块共享配置,这意味着您不必多次设置它。
- 指定您的 envFilePath环境文件路径 在您的配置对象中。 这个属性可以是一个字符串(如果你有一个 .env 文件)或包含所有你的数组 .env 文件并将告诉配置模块要查找哪些文件。
@Module({
imports: [
ConfigModule.forRoot({
isGlobal: true,
envFilePath: 'Name(s) of your .env file(s)',
}),
第四步:使用配置服务读取环境变量
要访问配置值,首先要导入 配置服务 从 @nestjs/配置. 通过声明将其注入到类的构造函数中 私人的 变量和赋值 配置服务 作为它的类型。
例如:
constructor(private config: ConfigService) {}
要访问变量,请调用 得到 上的方法 配置服务 在你的 私人的 多变的。 将您需要的数据类型作为泛型传递给它,以及您要访问的环境变量的名称。
例如:
const envVar = this.config.get<string>('ENV_VALUE');
这 配置服务 查找名为“ENV_VALUE”的值并返回其值。
请注意,如果两个 .env 文件包含相同的属性名称,第一个在 环境文件路径 将优先。
环境变量的重要性
环境变量是程序的重要组成部分,尤其是在更复杂的应用程序中。 它们使您可以通过易于理解的通用机制控制程序的配置。
您可以使用环境变量来控制配置的各个方面。 从不同的数据库设置到 API 密钥和凭据等敏感数据,它们让您无需接触底层源代码即可更改配置