Variáveis de ambiente no Next.js explicadas

Variáveis de ambiente no Next.js

Variáveis de ambiente no Next.js: .env, NEXT_PUBLIC_ | We.Inc

Como o Next.js carrega arquivos .env, em que ordem, o que o NEXT_PUBLIC_ realmente faz no build e como ler valores em runtime. Cole o seu .env para ver o que chega ao navegador.

O Next.js lê os arquivos .env da raiz do projeto para dentro de process.env. Por padrão, as variáveis ficam só no servidor. Coloque o prefixo NEXT_PUBLIC_ em um nome e o Next.js copia o valor para o JavaScript do navegador durante o next build, então ele fica público e congelado até você fazer um novo build. Nunca coloque um segredo atrás desse prefixo.

Ordem de carregamento: o primeiro arquivo que define uma variável vence

Cole abaixo o conteúdo de um arquivo .env. O verificador separa cada variável em só no servidor ou enviada ao navegador, e aponta nomes públicos que parecem segredos. Tudo roda nesta página; nada do que você cola é enviado.

Perguntas frequentes

Por que a minha variável de ambiente fica undefined no navegador?

Sem o prefixo NEXT_PUBLIC_, uma variável só existe no servidor, e o Next.js a substitui por uma string vazia no código do cliente. Adicione o prefixo só se o valor puder ser publicado, e depois faça o build de novo.

Mudei um valor NEXT_PUBLIC_ no meu host e nada aconteceu. Por quê?

Os valores públicos são embutidos quando o next build roda. Um bundle já publicado mantém o valor antigo até você fazer um novo build com o valor novo.

O .env.local funciona nos testes?

Não. Quando NODE_ENV é test, o Next.js ignora o .env.local para que toda execução de teste receba os mesmos valores. Coloque os padrões de teste no .env.test e os overrides pessoais no .env.test.local.

Uma variável pode fazer referência a outra?

Sim. Escreva $OTHER_NAME dentro de um valor e o Next.js o expande. Se o valor precisar de um cifrão literal, escape-o como \$.

Qual é o valor de NODE_ENV?

Se você não o definir, o next dev usa development e os outros comandos usam production. Os valores permitidos são production, development e test.

O que o NEXT_PUBLIC_ realmente faz

Lendo valores em runtime

Proteja-se contra vazamentos

Lendo variáveis no código

Valor só do servidor em um Route Handler

DB_URL não tem prefixo, então só existe no servidor. Route Handlers e Server Components podem lê-lo livremente.

Valor público em um Client Component

O nome literal completo é obrigatório. No build, o Next.js o troca pelo valor, então o navegador vê uma string simples.

Leia um valor a cada requisição

Aguardar connection() faz a página renderizar dinamicamente, então o valor vem do servidor em execução e não do build.

O loadEnvConfig aplica a mesma ordem de carregamento, o que mantém scripts e setups de teste alinhados com o app.

Verificador de .env

Cole as linhas do .env

Onde cada variável pode ser lida

Variável

Disponível em

Observação

Só no servidor

Servidor e navegador (embutida no build)

Não é uma linha de variável

O nome parece um segredo. Tudo com NEXT_PUBLIC_ fica visível para todo visitante.

Faz referência a {v}, que o Next.js expande.

NODE_ENV só aceita production, development ou test.

Nenhuma variável encontrada ainda.

{n} só no servidor, {v} enviadas ao navegador

Comece grátis · Sem cartão de crédito

Relacionados: Guias

Produto

Para quem é

Recursos

Recursos

Empresa

Mapa do site