【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

相关文章

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统

Debian系和Redhat系防火墙配置方式

《Debian系和Redhat系防火墙配置方式》文章对比了Debian系UFW和Redhat系Firewalld防火墙的安装、启用禁用、端口管理、规则查看及注意事项,强调SSH端口需开放、规则持久化,... 目录Debian系UFW防火墙1. 安装2. 启用与禁用3. 基本命令4. 注意事项5. 示例配置R

PyCharm中配置PyQt的实现步骤

《PyCharm中配置PyQt的实现步骤》PyCharm是JetBrains推出的一款强大的PythonIDE,结合PyQt可以进行pythion高效开发桌面GUI应用程序,本文就来介绍一下PyCha... 目录1. 安装China编程PyQt1.PyQt 核心组件2. 基础 PyQt 应用程序结构3. 使用 Q

Redis MCP 安装与配置指南

《RedisMCP安装与配置指南》本文将详细介绍如何安装和配置RedisMCP,包括快速启动、源码安装、Docker安装、以及相关的配置参数和环境变量设置,感兴趣的朋友一起看看吧... 目录一、Redis MCP 简介二、安www.chinasem.cn装 Redis MCP 服务2.1 快速启动(推荐)2.

Spring Boot配置和使用两个数据源的实现步骤

《SpringBoot配置和使用两个数据源的实现步骤》本文详解SpringBoot配置双数据源方法,包含配置文件设置、Bean创建、事务管理器配置及@Qualifier注解使用,强调主数据源标记、代... 目录Spring Boot配置和使用两个数据源技术背景实现步骤1. 配置数据源信息2. 创建数据源Be

Spring Boot Maven 插件如何构建可执行 JAR 的核心配置

《SpringBootMaven插件如何构建可执行JAR的核心配置》SpringBoot核心Maven插件,用于生成可执行JAR/WAR,内置服务器简化部署,支持热部署、多环境配置及依赖管理... 目录前言一、插件的核心功能与目标1.1 插件的定位1.2 插件的 Goals(目标)1.3 插件定位1.4 核

RabbitMQ消息总线方式刷新配置服务全过程

《RabbitMQ消息总线方式刷新配置服务全过程》SpringCloudBus通过消息总线与MQ实现微服务配置统一刷新,结合GitWebhooks自动触发更新,避免手动重启,提升效率与可靠性,适用于配... 目录前言介绍环境准备代码示例测试验证总结前言介绍在微服务架构中,为了更方便的向微服务实例广播消息,

nginx 负载均衡配置及如何解决重复登录问题

《nginx负载均衡配置及如何解决重复登录问题》文章详解Nginx源码安装与Docker部署,介绍四层/七层代理区别及负载均衡策略,通过ip_hash解决重复登录问题,对nginx负载均衡配置及如何... 目录一:源码安装:1.配置编译参数2.编译3.编译安装 二,四层代理和七层代理区别1.二者混合使用举例

Java JDK1.8 安装和环境配置教程详解

《JavaJDK1.8安装和环境配置教程详解》文章简要介绍了JDK1.8的安装流程,包括官网下载对应系统版本、安装时选择非系统盘路径、配置JAVA_HOME、CLASSPATH和Path环境变量,... 目录1.下载JDK2.安装JDK3.配置环境变量4.检验JDK官网下载地址:Java Downloads

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于