| por Arthur Rodrigues

🚀 Como gerar um site estático com Next.js e evitar problemas com imagens


Você está tentando fazer o build do seu site Next.js como páginas estáticas, mas está tendo problemas com imagens? Então essa dica é pra você!

Passo 1: Configure o Next.js para gerar HTML estático no build

No seu arquivo next.config.ts (ou next.config.js), adicione a diretiva abaixo:

import type {NextConfig} from "next";

const nextConfig: NextConfig = {
  output: "export",
};

export default nextConfig;

Passo 2: Rode o comando padrão do Next.js para build

Isso irá gerar uma pasta out na raiz do seu projeto

npm run build

Passo 3: Rode o comando para servir os arquivos estáticos localmente

npx serve@latest out

Obs: Isso irá instalar o pacote server globalmente na sua máquina

⚠️ Atenção com as imagens!

Ao servir os arquivos estáticos localmente, você irá perceber que as imagens podem não estar aparecendo isso ocorre quando você usa o componente <Image /> do Next.js, pois ele depende da rota especial /_next/image para otimizar e servir as imagens, o que não funciona no modo estático.

Resultado: ao abrir o site estático, suas imagens podem não aparecer, dando erro 404.

🔑 A solução simples

Substitua o <Image /> por tags <img /> padrão:

// TROQUE
import Image from "next/image";

<Image src="/logo.png" width={200} height={100} alt="Logo" />;

// POR
<img src="/logo.png" width={200} height={100} alt="Logo" />;

Após isso gere o build novamente


Imagem "Not found" de Draguth Leon por Pixabay