Uma variável de ambiente fornece informações sobre o ambiente em que um processo está sendo executado. Eles configuram portas de servidor e conexões de banco de dados, ocultam dados confidenciais como chaves de API e muito mais.

A maneira NestJS de ler variáveis ​​de ambiente difere do pacote dotenv padrão do NodeJS.

O módulo de configuração NestJS permite gerenciar suas variáveis ​​de ambiente em apenas algumas etapas.

Etapa 1: instalando dependências

NestJS fornece um dedicado @nestjs/config pacote que usa o dotenv pacote sob o capô. Este pacote de dependência zero carrega variáveis ​​de ambiente de um .env arquivo em processo.env. O objeto process.env é uma variável global injetada em tempo de execução para uso do seu aplicativo.

Instale o pacote de configuração NestJS executando:

npm instalar @nestjs/config

O pacote de configuração NestJS funciona expondo um módulo de configuração e um serviço de configuração ao aplicativo. O módulo de configuração especifica o .env arquivo o aplicativo para ler. Ao mesmo tempo, o serviço de configuração expõe as informações dentro do

instagram viewer
.env arquivo para o resto do aplicativo.

Etapa 2: criando arquivos ENV

Armazenar variáveis ​​de ambiente em um arquivo permite que você acessá-los facilmente de qualquer idioma, em diferentes sistemas operacionais. Você pode controlar a versão desses .env arquivos, então eles aumentam a portabilidade do projeto e podem facilitar os problemas de depuração.

A abordagem NestJS para criar arquivos .env difere da recomendação oficial dotenv. De acordo com a documentação dotenv, você não deve criar mais de um arquivo .env em um aplicativo. O NestJS permite criar vários arquivos .env com nomes diferentes.

Como boa prática, você deve sempre criar arquivos .env no diretório raiz do seu projeto e incluí-los em seu .gitignore Arquivo.

Não há uma maneira especial de criar um arquivo .env - apenas crie e edite-os com seu editor de texto normal - mas eles devem começar com .env. Por exemplo, .env.desenvolvimento.

Etapa 3: Configurando o Módulo de Configuração

Siga a etapa abaixo para configurar seu Config Module globalmente e especifique o .env caminhos:

  1. No módulo raiz do seu projeto (app.modue.ts) arquivo, importar ConfigModule a partir de @nestjs/config.
  2. Adicionar ConfigModule para o seu importações array e chame o forRoot método nele.
  3. Passe um objeto de configuração para o forRoot método, com éGlobal propriedade para verdadeiro. Esta opção compartilha a configuração por meio de outros módulos em seu aplicativo, o que significa que você não precisará configurá-lo mais de uma vez.
  4. Especifique seu envFilePath em seu objeto de configuração. Esta propriedade pode ser uma string (se você tiver uma .env arquivo) ou uma matriz contendo todos os seus .env arquivos e dirá ao módulo de configuração quais arquivos procurar.
// app.module.ts
@Módulo({
importações: [
ConfigModule.forRoot({
éGlobal: verdadeiro,
envFilePath: 'Nome(s) do(s) seu(s) arquivo(s) .env',
}),

Etapa 4: usando o serviço de configuração para ler variáveis ​​de ambiente

Para acessar os valores de configuração comece importando ConfigService a partir de @nestjs/config. Injete-o no construtor da classe ao declarar um privado variável e atribuição ConfigService como seu tipo.

Por exemplo:

construtor(configuração privada: ConfigService) {}

Para acessar uma variável, chame o pegue método no ConfigService Nas suas privado variável. Passe o tipo de dados que você precisa como genérico e o nome da variável de ambiente que você deseja acessar.

Por exemplo:

const envVar = this.config.get<corda>('ENV_VALUE');

o ConfigService procura um valor com o nome “ENV_VALUE” e retorna seu valor.

Observe que se dois .env arquivos contêm o mesmo nome de propriedade, o primeiro especificado no envFilePath terá precedência.

A Importância das Variáveis ​​de Ambiente

As variáveis ​​de ambiente são uma parte essencial de um programa, principalmente em aplicações mais complexas. Eles permitem que você controle a configuração do seu programa por meio de um mecanismo comum e fácil de entender.

Você pode usar variáveis ​​de ambiente para controlar todos os aspectos da configuração. De diferentes configurações de banco de dados a dados confidenciais, como chaves e credenciais de API, eles permitem alterar a configuração sem tocar no código-fonte subjacente.