Uma variável de envolvente fornece informações sobre o envolvente em que um processo está sendo executado. Elas configuram portas de servidor e conexões de banco de dados, ocultam dados confidenciais uma vez que chaves de API e muito mais.
A maneira NestJS de ler as variáveis de envolvente difere do pacote dotenv padrão do NodeJS.
O módulo de feitio NestJS permite gerenciar suas variáveis de envolvente em somente algumas etapas.
Lanço 1: instalando dependências
NestJS fornece um devotado @nestjs/config pacote que usa o dotenv pacote sob o capô. Leste pacote de obediência zero carrega variáveis de envolvente de um .env registro em processo.env. O objeto process.env é uma variável global injetada em tempo de realização para uso do seu aplicativo.
Instale o pacote de feitio NestJS executando:
npm install @nestjs/config
O pacote de feitio NestJS funciona expondo um módulo de feitio e um serviço de feitio ao aplicativo. O módulo de feitio especifica o .env registro o aplicativo para ler. Ao mesmo tempo, o serviço de feitio expõe as informações dentro do .env registro para o resto do aplicativo.
Lanço 2: criando arquivos ENV
Armazenar variáveis de envolvente em um registro permite acessá-las facilmente de qualquer linguagem, em diferentes sistemas operacionais. Você pode controlar a versão desses .env arquivos, portanto eles aumentam a portabilidade do projeto e podem facilitar os problemas de depuração.
A abordagem NestJS para produzir arquivos .env difere da recomendação solene dotenv. De convenção com a documentação dotenv, você não deve produzir mais de um registro .env em um aplicativo. O NestJS permite produzir vários arquivos .env com nomes diferentes.
Porquê boa prática, você deve sempre produzir arquivos .env no diretório raiz do seu projeto e incluí-los em seu .gitignore Registo.
Não há uma maneira peculiar de produzir um registro .env—somente crie e edite-os com seu editor de texto normal—mas eles devem iniciar com .env. Por exemplo, .env.desenvolvimento.
Lanço 3: Configurando o Módulo de Feitio
Siga a lanço subordinado para configurar seu Config Module globalmente e especifique o .env caminhos:
- No módulo raiz do seu projeto (app.modue.ts) registro, importar ConfigModule a partir de @nestjs/config.
- Somar ConfigModule para o seu importações array e chame o forRoot método nele.
- Passe um objeto de feitio para o forRoot método, com éGlobal propriedade para verdadeiro. Esta opção compartilha a feitio por meio de outros módulos em sua tarefa, o que significa que você não precisará configurá-la mais de uma vez.
- Especifique seu envFilePath em seu objeto de feitio. Esta propriedade pode ser uma string (se você tiver uma .env registro) ou uma matriz contendo todos os seus .env arquivos e dirá ao módulo de feitio quais arquivos procurar.
@Module({
imports: [
ConfigModule.forRoot({
isGlobal: true,
envFilePath: 'Name(s) of your .env file(s)',
}),
Lanço 4: usando o serviço de feitio para ler variáveis de envolvente
Para acessar os valores de feitio comece importando ConfigService a partir de @nestjs/config. Injete-o no construtor da classe declarando um privado variável e atribuição ConfigService uma vez que seu tipo.
Por exemplo:
constructor(private config: 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 uma vez que genérico e o nome da variável de envolvente que você deseja acessar.
Por exemplo:
const envVar = this.config.get<string>('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 Valimento das Variáveis de Envolvente
As variáveis de envolvente são uma segmento necessário de um programa, principalmente em aplicativos mais complexos. Eles permitem que você controle a feitio do seu programa por meio de um mecanismo universal e fácil de entender.
Você pode usar variáveis de envolvente para controlar todos os aspectos da feitio. De diferentes configurações de banco de dados a dados confidenciais, uma vez que chaves e credenciais de API, eles permitem modificar a feitio sem tocar no código-fonte subjacente.