首页 > 其他分享 >nest.js中不同环境的配置读取

nest.js中不同环境的配置读取

时间:2023-12-27 14:57:32浏览次数:44  
标签:aaa 读取 process nest js env path config

node中不同环境的配置读取

在node中最常用的是.env格式的配置文件,他有一个专门的npm包 dotenv

我们来创建一个node项目试一下:

进入这个目录,安装dotenv:

npm install dotenv

然后新建一个.env配置文件:

aaa=1
bbb=2

新建index.js并写入如下内容:

require('dotenv').config({
    path: './.env',
})

console.log(process.env) 

node执行一下:

node index.js


打印的环境变量中就包含了.env中的内容

那如果还有生产环境的配置文件呢

比如.production.env:

a=111
b=222

我们可以通过NODE_ENVIRONMENT环境变量来切换:

require('dotenv').config({
    path: process.env.NODE_ENVIRONMENT === 'production' ? '.production.env' : '.env',
})

console.log('aaa', process.env.aaa);
console.log('bbb', process.env.bbb)

 

nest.js中读取不同环境配置

nest中提供了完整的解决方案:@nestjs/config
我们创建个nest项目来试一下:

nest new nest-config-test -p npm

安装一下@nestjs/config包:

npm install --save @nestjs/config

这个包同样是动态模块的方式,他有forRoot和fotFeature两个方法

我们在根目录加一个配置文件.env

aaa=1
bbb=2

然后在AppModule里面引入:

然后再AppController里注入ConfigService来读取配置:

把nest服务跑起来:

npm run start:dev

浏览器访问:

可以看到,nest读取到了.env里的配置
如果有多个配置,比如还有个.aaa.env:

aaa=3

在AppModule中这样指定:

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { ConfigModule } from '@nestjs/config';
import * as path from 'path';

@Module({
  imports: [
    ConfigModule.forRoot({
      envFilePath: [
        path.join(process.cwd(), '.aaa.env'),
        path.join(process.cwd(), '.env'),
      ],
    }),
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

前面的配置会覆盖后面的配置。
重新跑一下,并访问:

可以看到aaa的值被覆盖了

标签:aaa,读取,process,nest,js,env,path,config
From: https://www.cnblogs.com/sunyan97/p/17930452.html

相关文章

  • js的this指向
    在JavaScript中,this是一个特殊的变量,它引用了调用对象。它的指向在不同的上下文中有不同的变化。以下是一些常见的this指向的情况:1.全局上下文:在全局作用域中,this指向全局对象。在浏览器中,这通常是window对象。console.log(this);//window(在浏览器中)2.函数调用:当......
  • JS 日期与毫秒之间互相转换
    时间戳(Unix/Linuxtimestamp)转换工具—在线转换毫秒时间戳工具(toolscat.com) Date()函数:该方法返回日期的毫秒表示(毫秒数精确到毫秒)1.毫秒转日期://2023-3-25格式newDate(1679673600000).toLocaleDateString().replace(/\//g,"-");//2023-03-25格式newDate(1......
  • permission.js 主要是对权限管理进行分析
    //引入路由importrouterfrom'./router'//引入仓库importstorefrom'./store'//引入ElementUI中的提示组件messageimport{Message}from'element-ui'//引入nprogress进度条importNProgressfrom'nprogress'//progressbarimport......
  • router下的 index.js 对路由进行分析
    //引入vueimportVuefrom'vue'//引入vue-routerimportRouterfrom'vue-router'//路由就是一个插件需要useVue.use(Router)//引入layout组件很重要//一级路由出口匹配layout组件/*Layout*/importLayoutfrom'@/layout'/*RouterModules*///引入其......
  • store下的 moudles 下的 permssion.js文件 主要是对路由规则的生成进行解释
    import{asyncRoutes,constantRoutes}from'@/router'/***Usemeta.roletodetermineifthecurrentuserhaspermission*@paramroles*@paramroute*/functionhasPermission(roles,route){//如果route.meta规则中有metameta中有roles选项......
  • js一道try...catch的面试题
    说到try...catch都觉得非常熟悉了,不就是用来捕捉代码块中的错误嘛,平时也用得比较多的。然而因为了解不够多,我的面试却栽在了一个简单的知识点上:try...catch只能捕捉到同步执行代码块中的错误。题目是:以下代码有错吗?如果有错,应该如何改正?try{setTimeout(()=>{thrown......
  • 关于autojs
    1、官方文档:http://doc.autoxjs.com/2、vscode的安装使用:https://blog.csdn.net/tfnmdmx/article/details/1239848083、vscode的智能提示:https://blog.csdn.net/zz00008888/article/details/133771057已实现的热更新方案:1、将gitlab可以设置为公开访问,通过http下载压缩包,解压......
  • nested exception is org.apache.ibatis.type.TypeException: Could not set paramete
    org.mybatis.spring.MyBatisSystemException:nestedexceptionisorg.apache.ibatis.type.TypeException:Couldnotsetparametersformapping:ParameterMapping{property='name',mode=IN,javaType=classjava.lang.String,jdbcType=null,numericScale=nu......
  • jmeter的json提取器多个取值的取法&ForEach控制器对多取值变量进行循环调用
    1、jmeter的json提取器多个取值的取法userId有多个值 $.responseData.datas[*].userId-1代表取所有的值  2、ForEach控制器对多取值变量进行循环调用 --实现多取值变量进行循环调用${userId_matchNr} ---代表存储变量的长度  3、循环控制器--实现id自增 ......
  • 【力扣】-15. 三数之和|刷题打卡-JS
    给你一个整数数组 nums ,判断是否存在三元组 [nums[i],nums[j],nums[k]] 满足 i!=j、i!=k 且 j!=k ,同时还满足 nums[i]+nums[j]+nums[k]==0 。请你返回所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例1:输入:nums=[-1,0,1,2,-1,-4......