尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

NestJS——环境配置篇

NestJS——环境配置篇 NestJS——环境配置篇环境变量通过在package.json设置NODE_ENV,然后在代码中通过process.env.NODE_ENV即可拿到变量。{ ... scripts:{ start:dev: set NODE_ENVdevelopment nest start --watch, start:prod: NODE_ENVproduction node dist/src/main, } ... }直接设置需要区分Node运行环境Win:setNODE_ENVdevelopmentLinux:NODE_ENVdevelopment或者借助一些第三方库如cross-env:cross-env NODE_ENVdevelopment nest start这样就能在代码中访问到环境变量exportconstmodeprocess.env.NODE_ENV// development加载配置简单环境直接通过nestjs/config加载对应的配置文件即可import{Module}fromnestjs/common;import{ConfigModuleasNestConfigModule}fromnestjs/configModule({imports:[NestConfigModule.forRoot({isGlobal:true,envFilePath:[.env.${process.env.NODE_ENV}],})],exports:[],})exportclassConfigModule{}这样就会直接加载项目根目录下的.env.[mode]文件。复杂环境有时候项目里的需要区分环境变量很多更加灵活就需要简单封装一下配置模块加载配置文件这里使用的是yaml,也可使用其它库甚至可以自己手动解析.获取文件内配置内容解析为变量导出使用。import*asfsfromfsimport{join}frompathimport{load}fromjs-yamlimportIConfigurationfrom./configuration.interfaceconstloadEnvFile(mode){constenvPathjoin(process.cwd(),.env.${mode}.yaml)console.log([env path]${envPath})try{returnfs.readFileSync(envPath,utf8)}catch(err){console.log(env file is not exist,err)return}}constenvload(loadEnvFile(process.env.NODE_ENV))asIConfigurationexportconstPORTenv.http.port;exportdefault(){returnenv};定义类型exportinterfaceIMysql{port:numberhost:stringname:stringuser:stringpassword:string}exportinterfaceIDb{mysql:IMysql}interfaceIHttp{port:number}exportdefaultinterfaceIConfiguration{http:IHttp db:IDb}加载NestModuleimport{Module}fromnestjs/common;import{ConfigModuleasNestConfigModule}fromnestjs/configimportconfigurationfrom./configurationModule({imports:[NestConfigModule.forRoot({isGlobal:true,load:[configuration]})],exports:[],})exportclassConfigModule{}使用变量这里通过获取配置中mysql配置进行链接数据库从能区分生产、测试开发环境。import{MikroOrmModule}frommikro-orm/nestjs;import{Module}fromnestjs/common;import{ConfigService}fromnestjs/config;import{ConfigModule}fromsrc/config/config.module;import{IMysql}fromsrc/config/configuration.interface;importmikroOrmConfigfrom./mikro-orm.configModule({imports:[MikroOrmModule.forRootAsync({imports:[ConfigModule],inject:[ConfigService],useFactory:async(configService:ConfigService){returnmikroOrmConfig(configService.getIMysql(db.mysql));},})]})exportclassDbModule{}写在最后环境变量配置所以需要区分环境的才需要放置进来而且其它的静态变量可以通过其余文件直接导入到配置模块中。
返回列表