Определение среды узла в Nest.js

Я занимаюсь настройкой проекта Nest.js и ищу эффективное решение для определения среды Node, которая используется ConfigService для загрузки переменных среды:

import { Module } from '@nestjs/common';
import { ConfigService } from './config.service';

@Module({
    providers: [
        {
            provide: ConfigService,
            useValue: new ConfigService(`environments/${process.env.NODE_ENV}.env`)
        }
    ],
    exports: [ConfigService]
})
export class ConfigModule {}

Прямо сейчас я определяю его непосредственно в сценариях npm (например, "start:dev": "NODE_ENV=development nodemon"), но мне интересно, есть ли лучший подход для обработки различных сред вместо добавления его в каждый сценарий?


person Nikola Stojaković    schedule 10.03.2019    source источник


Ответы (2)


Разработка

Если он должен быть всегда development, просто установите его как системную переменную, см. Производство / Подготовка ниже. Если вы хотите запускать разные среды во время разработки, добавьте свои сценарии запуска npm. Кроме того, вы можете использовать cross-env, чтобы убедиться, что ваши скрипты работают на разных платформах:

"start": "cross-env NODE_ENV=development ts-node -r tsconfig-paths/register src/main.ts",

Тестирование

Если вы хотите запустить свои интеграционные тесты в другой среде, вы можете установить это в своем jest-e2e.json:

"globals": {
  "NODE_ENV": "test"
}

Настройка (или изменение) вашей среды для одного конкретного теста также может быть выполнена в тестовом коде:

let previousNodeEnv;
beforeAll(() => {
  previousNodeEnv = process.env.NODE_ENV;
  process.env.NODE_ENV = 'test';
});

afterAll(() => process.env.NODE_ENV = previousNodeEnv);

Производство / постановка

В промежуточной или производственной системе я бы рекомендовал установить ее как обычную системную переменную, см. этот поток.

person Kim Kern    schedule 10.03.2019

без cross-env вы можете использовать:

"start:local": "NODE_ENV=test ts-node -r tsconfig-paths/register src/main.ts "
person Et9    schedule 12.12.2020