官方地址 nest.nodejs.cn/techniques/…
环境配置 在任何一个框架中 都是不可或缺的 不管前端还是服务端
应用经常运行在不同的 environments。 根据环境,应使用不同的配置设置。
最简单的
yarn add @nestjs/config
app.module.ts
// 引入
import { ConfigModule } from '@nestjs/config'
@Module({
imports: [
//注册
ConfigModule.forRoot({isGlobal:true}),
DemoModule,
UploadModule,
GuardModule
],
controllers: [AppController],
providers: [AppService],
})
根目录创建.env文件
PORT=3306
USER_NAME="xiaozhang"
BASE_URL="127.0.0.1"
找个模块使用
guard.controller.ts
引入ConfigService
import { ConfigService } from '@nestjs/config'
然后我们可以使用标准构造函数注入来注入它:
constructor(private readonly config:ConfigService) {}
调用
@Get('env')
envTest(){
return this.config.get('USER_NAME')+this.config.get('PORT')
}
还有 .yml文件 命名空间之类的 可以在官网看一下
多环境配置
yarn add @nestjs/config cross-env
1. 新建env文件夹 env/index.ts env/dev.ts edn/prod.ts
dev.ts
export const DEV = {
url:"localhost:3000"
}
prod.ts
export const PROD = {
url:"https://www.baidu.com"
}
index.ts
import { DEV } from './dev';
import { PROD } from './PROD';
export default function () {
const env = process.env.RUNNING_ENV;
console.log("env",process.env);
return env === 'dev' ? DEV : PROD;
}
2. 引入
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { DemoModule } from './demo/demo.module';
import { UploadModule } from './upload/upload.module';
import { GuardModule } from './guard/guard.module';
//引入ConfigModule env
import { ConfigModule } from '@nestjs/config';
import env from './env/index';
@Module({
imports: [
//注入
ConfigModule.forRoot({ isGlobal: true, load: [env] }),
DemoModule,
UploadModule,
GuardModule,
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
3.controller使用 同样的引入 注入
import { Controller, Get, Post, Body, Patch, Param, Delete,UseGuards,SetMetadata } from '@nestjs/common';
import { GuardService } from './guard.service';
import { CreateGuardDto } from './dto/create-guard.dto';
import { UpdateGuardDto } from './dto/update-guard.dto';
import { RoleGuard } from './role/role.guard'
import { Role,ReqUrl } from './role/role.decorator'
import { ApiTags,ApiOperation, ApiParam, ApiQuery } from '@nestjs/swagger';
import { ConfigService } from '@nestjs/config'
@Controller('guard')
// @UseGuards(RoleGuard)
@ApiTags("guard模块")
export class GuardController {
constructor(private readonly config:ConfigService) {}
@Get('env')
envTest(){
return this.config.get('url')
}
}
4. package.json 命令
注入 dev 和 prod环境
"start:dev": "cross-env RUNNING_ENV=dev nest start --watch",
"start:prod": "cross-env RUNNING_ENV=prod node dist/main",