【Nestjs实操】环境变量和全局配置

2024-03-10 11:28

本文主要是介绍【Nestjs实操】环境变量和全局配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、环境变量

1、使用dotenv

  • 安装pnpm add dotenv

  • 根目录下创建.env文件,内容如下:

NODE_ENV=development
  • 使用
import {config} from "dotenv";
const path = require('path');
config({path:path.join(__dirname,'../.env')});
console.log(process.env.NODE_ENV);//读取

2、使用corss-env

  • 全局安装cross-env,执行:pnpm add cross-env -g

  • 调整package.json中的script配置:

  "scripts": {"start:dev": "cross-env APIHOST=itfeiniu.com nest start --watch",...},
  • 如何使用:process.env.APIHOST

以上两种环境变量的方式,可以同时存在。

image-20240309134956428

3、系统自带环境变量

nestjsprocess.env做了初始化,把package.json中的配置全部都赋值给了process.env。展示其中一部分如下图:
在这里插入图片描述

二、系统配置

nestjs中可以使用ConfigModule来开启配置功能。

1、实例化引用配置

  • 创建/config/env.dev/config/env.test配置文件

    #/config/env.dev   test配置文件结构一致
    CONFIG_VERSION=devMYSQL_HOST=123.00.00.00
    MYSQL_PORT=3006
    MYSQL_DATABASE=sc-lowcode
    MYSQL_USER=root
    MYSQL_PASSWORD=111111
    
  • app.modules.ts配置

    import { ConfigModule } from '@nestjs/config';const getEnvFileName = () => {const RUNNING_ENV = process.env.RUNNING_ENV;console.log('RUNNING_ENV: ', RUNNING_ENV);return path.join(process.cwd(), `./config/env.${RUNNING_ENV}`);
    };@Module({imports: [...ConfigModule.forRoot({isGlobal: true,envFilePath: `${getEnvFileName()}`,}),
    })
    
  • package.json代码:

    "scripts": {"start:dev": "cross-env RUNNING_ENV=dev NODE_ENV=production node dist/main",...},
    
  • app.controller.ts调用

    @Controller()
    export class AppController {constructor(private readonly configService: ConfigService) {}@Get()getHello(): string {console.log(this.configService.get('MYSQL_PORT')); // 3006console.log(this.configService.get('MYSQL_DATABASE')); // sc-lowcodeconsole.log(this.configService.get('key', 'defaultValue')); // defaultValue}
    }
    

    简单来说就是app.modules.ts中全局引入ConfigModule之后,所有的子模块的控制器中都可以通过构造函数声明,自动实例化configService,然后控制器中可以使用this.configService.get(配置项)获取配置。

2、缓存在全局变量

/config/env.dev/config/env.testapp.modules.tspackage.json文件的配置和上述一致,不同的是在main.tsapp.controller.ts中的调用。

  • main.ts缓存

    import { ConfigService } from '@nestjs/config';
    import { globalConfigService } from './utils/env';
    async function bootstrap() {...// 暂存配置globalConfigService.configService = app.get(ConfigService);...
    }
    
  • /utils/env.ts代码

    import { ConfigService } from '@nestjs/config';export const globalConfigService: {configService: ConfigService | undefined;
    } = {configService: undefined,
    };
    

    app.controller.ts调用

  • globalConfigService.configService.get('OSS_ACCESS_KEY_ID')
    

不用的import对象,可以使用shift+alt+o自动整理清除。

这篇关于【Nestjs实操】环境变量和全局配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/794090

相关文章

windos server2022的配置故障转移服务的图文教程

《windosserver2022的配置故障转移服务的图文教程》本文主要介绍了windosserver2022的配置故障转移服务的图文教程,以确保服务和应用程序的连续性和可用性,文中通过图文介绍的非... 目录准备环境:步骤故障转移群集是 Windows Server 2022 中提供的一种功能,用于在多个

windos server2022里的DFS配置的实现

《windosserver2022里的DFS配置的实现》DFS是WindowsServer操作系统提供的一种功能,用于在多台服务器上集中管理共享文件夹和文件的分布式存储解决方案,本文就来介绍一下wi... 目录什么是DFS?优势:应用场景:DFS配置步骤什么是DFS?DFS指的是分布式文件系统(Distr

关于Maven中pom.xml文件配置详解

《关于Maven中pom.xml文件配置详解》pom.xml是Maven项目的核心配置文件,它描述了项目的结构、依赖关系、构建配置等信息,通过合理配置pom.xml,可以提高项目的可维护性和构建效率... 目录1. POM文件的基本结构1.1 项目基本信息2. 项目属性2.1 引用属性3. 项目依赖4. 构

龙蜥操作系统Anolis OS-23.x安装配置图解教程(保姆级)

《龙蜥操作系统AnolisOS-23.x安装配置图解教程(保姆级)》:本文主要介绍了安装和配置AnolisOS23.2系统,包括分区、软件选择、设置root密码、网络配置、主机名设置和禁用SELinux的步骤,详细内容请阅读本文,希望能对你有所帮助... ‌AnolisOS‌是由阿里云推出的开源操作系统,旨

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d

gradle安装和环境配置全过程

《gradle安装和环境配置全过程》本文介绍了如何安装和配置Gradle环境,包括下载Gradle、配置环境变量、测试Gradle以及在IntelliJIDEA中配置Gradle... 目录gradle安装和环境配置1 下载GRADLE2 环境变量配置3 测试gradle4 设置gradle初始化文件5 i

SpringCloud配置动态更新原理解析

《SpringCloud配置动态更新原理解析》在微服务架构的浩瀚星海中,服务配置的动态更新如同魔法一般,能够让应用在不重启的情况下,实时响应配置的变更,SpringCloud作为微服务架构中的佼佼者,... 目录一、SpringBoot、Cloud配置的读取二、SpringCloud配置动态刷新三、更新@R

MySQL中my.ini文件的基础配置和优化配置方式

《MySQL中my.ini文件的基础配置和优化配置方式》文章讨论了数据库异步同步的优化思路,包括三个主要方面:幂等性、时序和延迟,作者还分享了MySQL配置文件的优化经验,并鼓励读者提供支持... 目录mysql my.ini文件的配置和优化配置优化思路MySQL配置文件优化总结MySQL my.ini文件

C#读取本地网络配置信息全攻略分享

《C#读取本地网络配置信息全攻略分享》在当今数字化时代,网络已深度融入我们生活与工作的方方面面,对于软件开发而言,掌握本地计算机的网络配置信息显得尤为关键,而在C#编程的世界里,我们又该如何巧妙地读取... 目录一、引言二、C# 读取本地网络配置信息的基础准备2.1 引入关键命名空间2.2 理解核心类与方法

最新版IDEA配置 Tomcat的详细过程

《最新版IDEA配置Tomcat的详细过程》本文介绍如何在IDEA中配置Tomcat服务器,并创建Web项目,首先检查Tomcat是否安装完成,然后在IDEA中创建Web项目并添加Web结构,接着,... 目录配置tomcat第一步,先给项目添加Web结构查看端口号配置tomcat    先检查自己的to