Ler variáveis ​​de ambiente no Node.js


Respostas:


1879
process.env.ENV_VARIABLE

Onde ENV_VARIABLEé o nome da variável que você deseja acessar.

Consulte os documentos do Node.js. paraprocess.env .


4
Observe que isso não será visível fora do processo do nó e de seus subprocessos. Por exemplo, não seria visível se você disparasse envem outra janela do shell enquanto o processo do nó estiver em execução, nem no mesmo shell após a saída do processo do nó.
Marko Bonaci

17
isso também funciona para atribuir variáveis. process.env.FOO = "foo";trabalho.
pintos

16
Vale ressaltar que isso não funciona em um aplicativo React. process.envé higienizado por razões de segurança. Somente variáveis ​​que começam com REACT_ENV_estão disponíveis. Veja: github.com/facebookincubator/create-react-app/blob/master/…
Mark Edington

7
@MarkEdington eu acho que deveria serREACT_APP_
Sr.

5
@ Mr.14 Você está certo! É REACT_APP_ não REACT_ENV_ #
Mark Edington

133

Ao usar o Node.js , você pode recuperar variáveis ​​de ambiente por chave do process.envobjeto:

por exemplo

var mode   = process.env.NODE_ENV;
var apiKey = process.env.apiKey; // '42348901293989849243'

Aqui está a resposta que explicará a configuração de variáveis ​​de ambiente no node.js


qual lib é necessária para usar o método process.env acima?
User_mda

3
@user_mda process.envestá embutido na API node.js.
Jason Axelson

Acabei de definir o que eu quiser no process.env? por que as pessoas o definem como um objeto de configuração requerido () pelo node.js?
PDN 27/04

3
process.env fornece acesso à variável de ambiente definida no nível do sistema operacional. Eles podem ser definidos de várias maneiras e dependerão de onde você está implantando seu aplicativo. Por exemplo, geralmente executo meu aplicativo local usando NODE_ENV = development NODE_PATH = lib node server.js. Então process.env.NODE_PATH retornará 'lib'
NectarSoft

57

Se você deseja usar uma chave de cadeia gerada no seu programa Node.js. var v = 'HOME', você pode usar process.env[v].

Caso contrário, process.env.VARNAMEdeve ser codificado no seu programa.


Por que você tem process.env['HOME']?
algorythm

35

Para recuperar variáveis ​​de ambiente no Node.JS, você pode usar process.env.VARIABLE_NAME , mas não esqueça que a atribuição de uma propriedade em process.env converterá implicitamente o valor em uma cadeia de caracteres.

Evitar lógica booleana

Mesmo que seu arquivo .env defina uma variável como SHOULD_SEND = false ou SHOULD_SEND = 0 , os valores serão convertidos em strings ( "false" e "0" respectivamente) e não serão interpretados como booleanos.

if (process.env.SHOULD_SEND) {
 mailer.send();
} else {
  console.log("this won't be reached with values like false and 0");
}

Em vez disso, você deve fazer verificações explícitas. Descobri que, dependendo do nome do ambiente, percorre um longo caminho.

 db.connect({
  debug: process.env.NODE_ENV === 'development'
 });

1
Eu gosto de usar 'yes' e 'no' para envios booleanos que devem ser verificados explicitamente. Isso evita problemas em muitas linguagens de programação.
Dogweather 24/08/19

22

Você pode usar o pacote env para gerenciar suas variáveis ​​de ambiente por projeto:

  • Crie um .envarquivo no diretório do projeto e coloque todas as suas variáveis ​​lá.
  • Adicione esta linha na parte superior do arquivo de entrada do aplicativo:
    require('dotenv').config();

Feito. Agora você pode acessar suas variáveis ​​de ambiente com process.env.ENV_NAME.


9
O pacote dotenv é útil, mas a pergunta feita é respondida através da leitura process.env.ENV_VARIABLE. O pacote dovenv trata de carregar configurações de um arquivo no ambiente.
Robert Patterson

Esse é o meu ponto: gerenciar e carregar variáveis ​​env da envbiblioteca.
Huy Vo

1
Você pode fazer o mesmo de uma maneira não específica para node.js. usando o envdirutilitário
Chris Johnson

Semelhante ao github.com/bitrise-io/envman, que também não é nodeespecífico.
MarkHu 01/12/19

1
você fez meu dia! Muito obrigado!
Vaha

0

Por que não usá-los no diretório Users no .bash_profilearquivo, para que você não precise enviar nenhum arquivo com suas variáveis ​​para produção?

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.