‫Instrutor: Bem-vindo de volta.
‫Neste vídeo, você aprenderá tudo
‫sobre variáveis de ambiente.
‫Então, o que são, como os definimos e como os usamos.
‫Agora, isso não é exatamente sobre o Express, ele realmente
‫tem a ver com o desenvolvimento do nó JS em geral, mas
‫realmente precisamos disso para seguir em frente
‫no projeto e, portanto, este é um bom momento
‫para falar sobre isso.
‫Assim, o node JS, ou aplicativos Express, podem
‫ser executados em diferentes ambientes.
‫E os mais importantes são o ambiente de desenvolvimento e
‫o ambiente de produção.
‫Isso porque, dependendo do ambiente, podemos usar bancos
‫de dados diferentes, por exemplo, ou podemos
‫ativar ou desativar o login, ou podemos ativar
‫ou desativar a depuração, ou realmente
‫todos os tipos de configurações diferentes que podem
‫mudar dependendo do desenvolvimento que nós ' está dentro
‫Então, novamente, os mais importantes são o ambiente
‫de desenvolvimento e produção.
‫Mas existem outros
‫ambientes que equipes maiores podem usar.
‫Portanto, esse tipo de configuração
‫que acabei de mencionar, como diferentes bancos de dados ou
‫login ativado ou desativado, será baseado em variáveis de ambiente.
‫Agora, por padrão, o Express define o ambiente para desenvolvimento, o que
‫faz muito sentido porque é isso que estamos fazendo quando
‫iniciamos um novo projeto.
‫Então, para fins de
‫demonstração, vamos dar uma olhada nessa
‫variável e faremos isso aqui no servidor.
‫Portanto, lembre-se de que tudo o que não está
‫relacionado ao Express faremos fora do aplicativo. Arquivo JS.
‫Portanto, só usamos este aqui para configurar nosso aplicativo.
‫Portanto, só usamos este para configurar tudo
‫o que tem a ver com o aplicativo Express.
‫Mas as variáveis de ambiente estão realmente fora
‫do escopo do Express.
‫Então, vamos fazer um console rapidamente. faça login
‫aqui do app. obter e,
‫em seguida, terminar.
‫Salve aqui e aqui embaixo você pode ver o desenvolvimento.
‫Deixe-me limpar o console aqui, salvá-lo novamente e, portanto,
‫aqui novamente você verá o desenvolvimento.
‫Esse é o ambiente em que estamos atualmente.
‫E então você vê que este app. getenv nos fornecerá
‫a variável de ambiente env.
‫Portanto, em resumo, as variáveis de ambiente são variáveis globais usadas para
‫definir o ambiente no qual um aplicativo de
‫nó está sendo executado.
‫Portanto, este é definido pelo
‫Express, mas o próprio nó JS define muitos ambientes.
‫Agora, esta variável env aqui é definida pelo Express,
‫mas o próprio nó JS também define
‫muitas variáveis de ambiente.
‫E então vamos dar uma olhada nisso também.
‫Então, esses estão localizados no processo. env.
‫Salve e aqui
‫temos um monte de variáveis diferentes, ok e não
‫vou passar por todas elas, mas vamos ver que elas realmente são um
‫monte delas, e o node usa a maioria
‫delas internamente.
‫Por exemplo, uma tarefa para o diretório
‫de trabalho atual aqui nesta variável de ambiente
‫e realmente um monte de outras coisas como você pode ver.
‫Por exemplo, minha pasta
‫pessoal ou meu nome de login, você vê o script que usamos para iniciar esse
‫processo, então, na verdade, um monte de coisas que, por algum
‫motivo, o nó JS precisa internamente.
‫Agora, essas variáveis vêm do módulo central
‫do processo e são definidas no momento em que o processo é iniciado.
‫E, como você pode ver, não precisamos exigir o módulo de
‫processo certo.
‫Ele está simplesmente disponível em todos os lugares automaticamente.
‫Agora no Express, muitos pacotes
‫dependem de uma variável especial chamada nó N.
‫Portanto, é uma variável
‫que é uma espécie de convenção que deve definir
‫se estamos em desenvolvimento ou em modo de produção.
‫No entanto, o Express não define
‫realmente essa variável e, portanto, temos que fazer isso manualmente.
‫E existem várias maneiras de fazer isso,
‫mas vamos começar com a mais fácil
‫que é usar o terminal.
‫Vou terminar esse
‫processo aqui, limpá-lo e, assim, quando iniciamos esse processo pela
‫última vez, o fizemos usando npm start.
‫E npm start, por sua vez, significa onde está?
‫Portanto, significa servidor nodemon.
‫E então vamos copiar isso aqui.
‫Portanto, usamos o servidor nodemon. js para iniciar o processo.
‫Mas se você quiser
‫definir uma variável de ambiente para este
‫processo, precisamos pré-planejar essa variável para este comando.
‫Portanto, dizemos
‫nodeenv, que é aquela variável especial
‫de que acabei de falar que é igual
‫a desenvolvimento.
‫E se eu começar esse processo agora, vamos dar uma olhada.
‫E agora temos aqui o nó N definido para desenvolvimento.
‫E então este é o resultado de fazer este console. processo de logoff.
‫env.
‫E
‫então essa variável que temos aqui realmente vem desse comando.
‫E podemos definir ainda mais, se quisermos.
‫Então, vamos apenas dizer que X tem 23 apenas
‫para fins de teste, inicie o processo e agora você verá que
‫a variável de ambiente X está anexada a essa string 23, certo.
‫Então, novamente, muitos pacotes no npm que
‫usamos para o desenvolvimento do
‫Express, na verdade, dependem dessa variável de ambiente.
‫E quando nosso projeto estiver
‫pronto e vamos implantá-lo, devemos mudar o nó N e a variável para produção.
‫E faremos isso, é claro, assim que implantarmos
‫o projeto no final do curso.
‫Portanto, definimos os nós
‫N e X como variáveis de ambiente, mas podemos fazer muito mais.
‫E isso porque geralmente usamos
‫variáveis de ambiente, como definições de configuração para nossos aplicativos.
‫Portanto, sempre que nosso aplicativo precisa de alguma configuração para coisas
‫que podem mudar com base no ambiente em que o aplicativo está
‫sendo executado, usamos variáveis de ambiente.
‫Por exemplo, podemos usar diferentes bancos de dados para desenvolvimento
‫e teste até que possamos definir uma variável para
‫cada um e, em seguida, ativar o
‫banco de dados certo de acordo com o ambiente.
‫Além disso, podemos definir dados
‫confidenciais como senhas e nome de usuário usando variáveis de ambiente.
‫Agora, não é realmente prático definir
‫sempre todas essas variáveis no comando
‫em que iniciamos o aplicativo.
‫Então imagine
‫que temos 10 variáveis ambientais e não seria muito prático
‫ter que escrever todas elas aqui dentro deste comando.
‫E então o que fazemos é criar um arquivo de configuração.
‫Então, deixe-me ir em frente e
‫criar a configuração. env.
‫E então env é
‫realmente a convenção para definir um arquivo que é essas variáveis de ambiente.
‫E o código VS realmente
‫reconhece isso e coloca este ícone de configuração diretamente no arquivo.
‫Portanto, vamos agora definir essa variável
‫aqui e colá-la aqui.
‫E também
‫podemos usar alguns desses dados confidenciais que acabei de mencionar.
‫Digamos que o
‫usuário seja Jonas em letras minúsculas e a senha seja um, dois, três, quatro, cinco, seis.
‫Agora, como você pode ver, esses nomes de variáveis
‫geralmente estão sempre em maiúsculas.
‫Então é uma espécie de convenção que usamos.
‫Agora, em seu código VS provavelmente
‫todo o texto é apenas branco, então você não tem realce de sintaxe.
‫E eu tenho isso porque eles usam isso. extensão env aqui.
‫Então, se você quiser. arquivos env para ficarem bonitos como este,
‫vá em frente e instale-os.
‫Portanto, temos a senha do usuário,
‫vamos definir também a porta na qual nosso aplicativo deve estar rodando.
‫Essa também é
‫uma variável padrão que geralmente está em a. env arquivo como este.
‫E vamos definir este como 8.000.
‫Agora, como realmente conectamos isso. arquivo env com nosso aplicativo
‫de nó?
‫Portanto, precisamos de
‫alguma forma de ler essas variáveis deste arquivo
‫e salvá-las como variáveis de ambiente.
‫Porque agora este é apenas um
‫arquivo de texto e o nó JS não tem como saber que essas variáveis estão aqui.
‫E então para isso o padrão é usar
‫um pacote npm chamado. env.
‫Então npm install. env, tudo
‫bem,
‫então vamos
‫ao nosso servidor e realmente requerer esse módulo.
‫Então const. env é igual a
‫require. env, tão simples.
‫E aqui nós
‫podemos simplesmente usar esta variável dotenv
‫chamada config nela e aí nós só temos que passar um objeto para
‫especificar o caminho onde nosso arquivo de configuração está localizado.
‫Portanto, caminho, config
‫dotenv.
‫E então o que
‫este comando fará agora
‫é ler nossas variáveis do arquivo e salvá-las nas variáveis de ambiente JS do nó.
‫Então, vamos agora executar npm start e
‫isso deve bloquear todas as nossas
‫variáveis de ambiente para o console por causa desta linha de código.
‫E então vamos esperar por isso, e de
‫fato aqui temos nodeenv, temos
‫a porta, as senhas e, claro, o resto dos dados devem estar em
‫algum lugar aqui dentro desta lista gigantesca.
‫Realmente não importa onde está aqui.
‫Então, o usuário era na verdade Jonas. io já e então devemos
‫chamá-lo aqui de nome de usuário.
‫Em seguida, salve
‫novamente aqui para executar o servidor novamente, e agora temos um
‫nome de usuário aqui e essas são as quatro variáveis
‫de ambiente definidas em nosso arquivo.
‫Ótimo, e só para terminar, vamos agora realmente usar esta
‫variável nodeenv e também a variável port.
‫E para fazer isso, vamos ao aplicativo. js e em algum lugar aqui a porta
‫deve ser definida e em algum lugar aqui temos o middleware oral logger
‫e o que eu quero
‫fazer agora é apenas executar esse middleware para
‫defini-lo apenas quando estivermos realmente em
‫desenvolvimento, para que o login não aconteça quando o
‫aplicativo está em produção.
‫Então, temos isso aqui, e vamos
‫prosseguir e
‫dizer se o processo. env. nodeenv é igual a
‫development well, só então use Morgan.
‫Agora você
‫deve estar se perguntando por que realmente temos acesso a
‫essa variável de ambiente aqui, quando na verdade não as definimos neste arquivo, mas no servidor. js.
‫E a resposta para isso é que a leitura
‫das variáveis do arquivo que acontece aqui para o processo do
‫nó só precisa acontecer uma vez.
‫Está então no processo e o processo é,
‫obviamente, o mesmo, não importa em qual arquivo estejamos.
‫Portanto, estamos sempre no
‫mesmo processo e as variáveis de ambiente estão no processo.
‫E assim o processo que está rodando, onde
‫nosso aplicativo está rodando é sempre
‫o mesmo e isso está disponível para nós em
‫cada arquivo do projeto.
‫Então é assim que usamos essa variável, agora vamos voltar
‫ao servidor e vamos dizer que a porta deve
‫ser aquela que
‫vem das variáveis de ambiente ou esta 3.000.
‫Então processe. env. porta ou 3.000.
‫Agora, algo está errado aqui, vamos dar uma olhada e, oh, vejo
‫que já estou usando 8.000 em alguns outros aplicativos que
‫estão sendo executados em algum lugar
‫do meu computador.
‫E então deixe-me ir em frente e mudar
‫isso aqui para 3.000 também.
‫Mas isso realmente não importa, você pode deixar o seu em
‫8.000 se funcionar para você.
‫Limpe aqui, salve novamente e agora funciona.
‫Você também pode se livrar deste console. logar aqui porque não
‫precisamos ver essas variáveis o tempo todo.
‫E agora vamos rapidamente fazer uma solicitação
‫de http para ver se nosso logger ainda funciona e vou fazer
‫isso aqui carteiro de
‫novo, então este, voltando, e agora nosso login se foi.
‫Bem, vamos ver por quê.
‫Portanto, temos aqui em desenvolvimento o que é correto.
‫E isso deve realmente funcionar, então
‫também está correto aqui, desenvolvimento.
‫Bem, vamos fazer um console. logar
‫e dar uma olhada em um
‫nível, mas ficamos indefinidos aqui.
‫Então, vamos verificar o que está acontecendo aqui, e sim, eu vejo
‫o problema que realmente
‫precisamos do arquivo
‫do aplicativo antes de nossas variáveis de ambiente serem lidas do arquivo de configuração.
‫E então precisa ser o contrário.
‫Deixe-me mover isso para cima aqui
‫e só depois queremos executar o código que
‫está no arquivo up.
‫E só depois disso queremos executar o
‫código que está no arquivo up.
‫Então, novamente, não pudemos ler a variável de
‫processo dentro do app. js porque ainda não foi configurado.
‫Portanto, se salvarmos agora, você verá
‫o desenvolvimento aqui.
‫E se fizermos nosso pedido agora, vamos enviá-lo, então é claro
‫que receberemos nosso logger de volta.
‫Então está funcionando agora.
‫E agora, finalmente, como último
‫teste, vamos adicionar um novo script de início ao nosso pacote. json.
‫Portanto, agora temos de iniciar o servidor nodemon, mas também
‫quero adicionar outro para produção apenas
‫para que possamos testar o que acontece nessa situação.
‫Portanto, inicie o prod, e
‫deixe-me chamar o outro de dev, portanto, na produção,
‫queremos simplesmente definir a variável nodeenv para produção.
‫Portanto, nodenv é igual à
‫produção e o resto é o mesmo.
‫Então
‫nodenv, servidor. js.
‫Então vamos
‫terminar este aqui npm run start
‫production.
‫E agora
‫você vê que nossa variável nodeenv está realmente configurada para produção.
‫Então, isso está vindo deste console. faça login aqui.
‫E se agora
‫fizermos este pedido, não iremos obter o nosso logger.
‫Portanto, não está aqui como antes.
‫E é basicamente assim que executamos
‫códigos diferentes, dependendo se estamos em desenvolvimento ou em produção.
‫Então, vamos nos livrar deste aqui,
‫podemos fechar este
‫também, e então vamos voltar ao nosso
‫script de desenvolvimento, é claro, então npm execute
‫start dev e tudo bem aqui estamos.
‫Apenas um teste final
‫e, de fato, aqui está o resultado do nosso login.
‫Então é isso para as variáveis de ambiente, vamos passar
‫para a aula final nesta seção.