Publicado em: 04/04/2024

Variáveis de ambiente | Next.js


Neste vídeo, exploramos como o Next.js gerencia variáveis de ambiente de forma diferenciada entre o lado do servidor e o cliente (browser), demonstrando como configurar e acessar essas variáveis em diferentes contextos.

Arquivos de Ambiente no Next.js

O Next.js utiliza arquivos .env na raiz do projeto para armazenar variáveis de ambiente. Existem variações específicas para diferentes ambientes:

  • .env - Arquivo base para todas as variáveis
  • .env.local - Tem prioridade sobre os outros (ótimo para desenvolvimento local)
  • .env.development - Usado apenas em desenvolvimento (npm run dev)
  • .env.production - Usado em produção (npm run build + npm run start)

O Next.js carrega automaticamente o arquivo correto baseado no ambiente de execução, sendo que o .env.local sempre tem precedência quando existe.

Isolamento entre Servidor e Cliente

Uma característica importante do Next.js é como ele trata as variáveis de ambiente de forma diferente entre:

  • Server Components: Componentes renderizados no servidor têm acesso a todas as variáveis de ambiente
  • Client Components: Componentes executados no browser não têm acesso às variáveis por padrão

Para expor uma variável ao cliente, é necessário prefixá-la com NEXT_PUBLIC_. Por exemplo:

1NEXT_PUBLIC_BASE_URL=http://localhost:3000

Server Components vs Client Components

No exemplo demonstrado, vimos que:

  • Na Home (Server Component), os console.log aparecem no terminal do servidor
  • No Perfil (Client Component), os logs aparecem no console do navegador

Isso acontece porque Server Components são renderizados completamente no servidor antes de serem enviados ao cliente, enquanto Client Components têm seu código JavaScript executado no browser.

Ambientes Dinâmicos

Podemos controlar qual arquivo de ambiente será carregado através da variável NODE_ENV:

1NODE_ENV=staging npm run build

Isso fará com que o Next.js procure por um arquivo .env.staging para carregar as variáveis específicas desse ambiente.

Considerações Finais

O sistema de variáveis de ambiente no Next.js oferece um controle granular importante para desenvolvimento seguro:

  • Segurança: Variáveis sensíveis (como chaves de API) ficam protegidas no servidor
  • Flexibilidade: Diferentes ambientes podem ter configurações específicas
  • Performance: Apenas as variáveis realmente necessárias são enviadas ao cliente

Para projetos mais complexos, vale considerar:

  • Usar nomes consistentes para variáveis entre ambientes
  • Documentar todas as variáveis necessárias em um .env.example
  • Nunca comitar arquivos .env com dados sensíveis no versionamento
  • Validar variáveis de ambiente na inicialização da aplicação

Este sistema de variáveis de ambiente é particularmente útil em aplicações que precisam de diferentes configurações para desenvolvimento, teste e produção, mantendo a segurança de informações sensíveis que não devem ser expostas no código do cliente.

Fernando Cunha
Artigo deFernando Cunha

Com mais de 15 anos de experiência em tecnologia e formado pela FAAP em Administração de empresas, hoje é o CEO da Mestres da Web, empresa referência no mercado nacional e com projeções de expansão internacional.

últimos vídeos

veja nossos vídeos mais recentes e esteja por dentro de muitas novidades.

Au 02 - Front-end - React - Estrutura de projeto - Mestres BEGIN
play

Au 02 - Front-end - React - Estrutura de projeto - Mestres BEGIN

Explorando a estrutura gerada pelo Create React App, entendendo o papel das pastas public e src, os conceitos de Virtual DOM, JSX e componentes, além de como o CSS é aplicado nos projetos React.

Autor deste artigo
Fernando Cunha17/03/2025
Au 03 - Front-end - React - Criando layout da nossa aplicação - Mestres BEGIN
play

Au 03 - Front-end - React - Criando layout da nossa aplicação - Mestres BEGIN

Explorando a criação de um layout fixo para a aplicação React, com barra lateral, barra superior e área dinâmica para conteúdo. Utilizando o React Router Dom v6 para gerenciar navegação entre rotas.

Autor deste artigo
Fernando Cunha17/03/2025
Au 04 - Front-end - React - Estilizando o layout da aplicação - Mestres BEGIN
play

Au 04 - Front-end - React - Estilizando o layout da aplicação - Mestres BEGIN

Abordando técnicas para organizar estilos em React, utilizando seletores CSS, CSS Modules, integração com React Router, reset CSS eficiente e boas práticas para garantir consistência visual e manutenibilidade.

Autor deste artigo
Fernando Cunha17/03/2025