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
.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:
- No módulo raiz do seu projeto (app.modue.ts) arquivo, importar ConfigModule a partir de @nestjs/config.
- Adicionar ConfigModule para o seu importações array e chame o forRoot método nele.
- 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.
- 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.