diff --git a/src/app.module.ts b/src/app.module.ts index cabad98..28222bb 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -6,7 +6,7 @@ import { MikroOrmModule } from '@mikro-orm/nestjs'; import { AppController } from './app.controller'; import { AppService } from './app.service'; import { AuthModule } from './auth/auth.module'; -import { getEnvPath } from './common/helper/env.helper'; +import { getNodeEnv, isIgnoreEnvFile } from './common/helper/env.helper'; import { envValidation } from './common/helper/env.validation'; import { MapModule } from './map/map.module'; import { UserMapModule } from './user-map/user-map.module'; @@ -16,9 +16,10 @@ import { UserModule } from './user/user.module'; imports: [ ConfigModule.forRoot({ isGlobal: true, - envFilePath: getEnvPath(`${__dirname}/..`), + envFilePath: `${__dirname}/../.${getNodeEnv}.env`, cache: true, validate: envValidation, + ignoreEnvFile: isIgnoreEnvFile, }), MikroOrmModule.forRoot(), AuthModule, diff --git a/src/common/helper/env.helper.ts b/src/common/helper/env.helper.ts index 1e3eccb..2fd0997 100644 --- a/src/common/helper/env.helper.ts +++ b/src/common/helper/env.helper.ts @@ -1,7 +1,16 @@ -import { resolve } from 'path'; +import { InternalServerErrorException } from '@nestjs/common'; -export const getEnvPath = (dest: string): string => { - const env: string = process.env.NODE_ENV; - const filename: string = env ? `.${env}.env` : '.development.env'; - return resolve(`${dest}/${filename}`); -}; +import { NODE_ENVIRONMENT } from './env.validation'; + +export const getNodeEnv = (() => { + const env = process.env.NODE_ENV; + const nodeEnv = NODE_ENVIRONMENT[env]; + if (nodeEnv === undefined) { + throw new InternalServerErrorException('Unknown NODE_ENV'); + } + return nodeEnv; +})(); + +export const isIgnoreEnvFile = + getNodeEnv === NODE_ENVIRONMENT.stage || + getNodeEnv === NODE_ENVIRONMENT.production; diff --git a/src/common/helper/env.validation.ts b/src/common/helper/env.validation.ts index b4b296c..9466fd8 100644 --- a/src/common/helper/env.validation.ts +++ b/src/common/helper/env.validation.ts @@ -13,16 +13,16 @@ const stage = 'stage'; const production = 'production'; const test = 'test'; -const nodeEnvironment = { +export const NODE_ENVIRONMENT = { [development]: development, [stage]: stage, [production]: production, [test]: test, -}; +} as const; export class EnvironmentVariables { - @IsEnum(nodeEnvironment) - NODE_ENV: keyof typeof nodeEnvironment; + @IsEnum(NODE_ENVIRONMENT) + NODE_ENV: keyof typeof NODE_ENVIRONMENT; @IsString() DB_HOST: string;