«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Лучший способ настроить переменные среды и несколько сред в Nest.js

Лучший способ настроить переменные среды и несколько сред в Nest.js

Опубликовано 16 августа 2024 г.
Просматривать:785

The Best way to configure environment variables and multi environments in Nest.js

Что мне действительно нравится в Nest.js так это то, что это мощный комплексный фреймворк node.js, который дает вам готовые решения для построения серверные приложения.

Он имеет встроенную поддержку TypeScript и сочетает в себе элементы ООП (объектно-ориентированное программирование), FP (функциональное программирование) и FRP (Функциональное реактивное программирование), как написано на официальном сайте.

У него также есть архитектура с самого начала, что удивительно для таких людей, как я, которые любят работать с хорошими структурированными архитектурными проектами.

Сама по себе документация очень впечатляет и охватывает все аспекты, включая установку переменных среды, но для меня
Я не совсем понял, как настроить несколько сред.

Возможно, потому, что я новичок в node.js иnesjs, однако, когда я искал в Интернете статьи, они всегда показывали способ использования библиотеки dotenv напрямую вместо встроенного использованияnesjs, который использует dotenv под капюшон.

И после многих часов просмотра статей рядом с документацией я разработал решение, встроенное в Nestjs, и решил поделиться им.


Первый

Предположим, нам нужны две среды для нашего проекта: 'dev' и 'prod'
и нам нужны две переменные среды для каждой среды: PORT и DATABASE_URL.

1. Создайте 2 файла .env для хранения  PORT и DATABASE_URL и назовите эти файлы ( .env.dev и .env.prod.)

PORT=3500

DATABASE_URL="file:./dev.db"`

2. Создайте переменную env с именем NODE_ENV, но на этот раз вместо того, чтобы хранить ее в файле .env, мы внедрим ее в стартовые сценарии для разработки и производства.

Настройка NODE_ENV может различаться на разных платформах (Windows, Mac или Linux), поэтому мы установим пакет перекрестного разделения, который позволит нам устанавливать переменные среды на разных платформах.

установить с помощью npm

$ npm install --save-dev cross-env

или с помощью pnpm

$ pnpm install --save-dev cross-env

Затем измените скрипты package.json для использования перекрестного окружения:

"scripts": {
    "start:dev": "cross-env-shell NODE_ENV=dev nest start --watch",
    "start:prod": "cross-env-shell NODE_ENV=prod node dist/main",
}

Итак, теперь, когда вы запускаете свое приложение с помощью

npm run start:dev 

или

pnpm run start:dev

У вас есть NODE_ENV=dev, и вы можете использовать его во всем приложении.

3- Чтобы Nestjs мог читать файлы .env, нам нужно использовать ConfigModule и правильно его настроить, но сначала нам нужно его установить.

нпм

$ npm i --save @nestjs/config

пнпм

$ pnpm i --save @nestjs/config

4- Используйте ConfigModule :

@Module({
  imports: [
    ConfigModule.forRoot({
      isGlobal: true,
      envFilePath: `.env.${process.env.NODE_ENV}`,
    }),
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

envFilePath: используется для указания другого пути для файла .env. 
или прочитайте файл, отличный от файла .env по умолчанию

.env.${process.env.NODE_ENV} будет преобразовано в .env.dev и
Если мы запустим команду

npm run start:prod

.env.${process.env.NODE_ENV} будет преобразовано в .env.prod.

5- Как получить доступ к переменным среды
Для доступа к переменным окружения мы используем ConfigModule.

Мы можем использовать его в main.ts

async function bootstrap() {
  const app = await NestFactory.create(AppModule);

  const configService = app.get(ConfigService);
  const port = configService.get('PORT');

  await app.listen(port);
}

или, если нам это нужно в другом месте, мы используем инъекцию.
например

@Injectable()
export class AppService {
  constructor(private configService: ConfigService) {}

  getHello(): string {
    return (
      this.configService.get('DATABASE_URL')
    );
  }
}
Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/ahmed_hyperov/the-best-way-to-configure-environment-variables-and-multi-environments-in-nestjs-31fi?1 Если есть какие-либо нарушения, пожалуйста, свяжитесь с Study_golang@163 .comdelete
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3