【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=dev
    
    MYSQL_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')); // 3006
        console.log(this.configService.get('MYSQL_DATABASE')); // sc-lowcode
        console.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自动整理清除。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Node.js是一种基于Chrome V8引擎的JavaScript运行环境,它可以使JavaScript在服务器端运行。为了使用Node.js,需要配置环境变量。下面是配置Node.js环境变量的步骤: 1. 下载并安装Node.js。 2. 配置Node.js环境变量。在Windows系统中,可以通过以下步骤配置环境变量: a. 打开“控制面板”。 b. 点击“系统和安全”。 c. 点击“系统”。 d. 点击“高级系统设置”。 e. 点击“环境变量”。 f. 在“系统变量”中找到“Path”变量,点击“编辑”。 g. 在“变量值”中添加Node.js的安装路径,例如“C:\Program Files\nodejs\”。 h. 点击“确定”保存配置。 3. 配置全局安装包路径。可以通过以下步骤配置全局安装包路径: a. 创建一个文件夹用于存放全局安装包,例如“G:\Node.js\node_modules\node_global”。 b. 打开命令提示符,输入以下命令:npm config set prefix "G:\Node.js\node_modules\node_global" c. 确认配置成功,输入以下命令:npm config get prefix 4. 配置全局安装包可执行环境变量。可以通过以下步骤配置全局安装包可执行环境变量: a. 在系统环境变量“Path”中添加全局安装包路径,例如“G:\Node.js\node_modules\node_global\bin”。 b. 点击“确定”保存配置。 5. 确认配置成功。可以通过以下命令确认配置成功:npm install -g vue,然后在“G:\Node.js\node_modules\node_global”路径下可以看到vue表示安装成功。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT飞牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值