Back-end

Vite failed to fetch dynamically imported module [SOLUÇÃO]

Vite failed to fetch dynamically imported module \[SOLUÇÃO\] Vite failed to fetch dynamically imported module \[SOLUÇÃO\] Se você é um desenvolvedor trabalhando com Vite,...

Marcos Costa
Marcos Costa
24 de março de 2026 5 min de leitura
Vite failed to fetch dynamically imported module [SOLUÇÃO]

Vite failed to fetch dynamically imported module [SOLUÇÃO]

Vite failed to fetch dynamically imported module [SOLUÇÃO]

Se você é um desenvolvedor trabalhando com Vite, provavelmente já se deparou com a mensagem de erro frustrante: "Failed to fetch dynamically imported module". Este problema pode interromper o fluxo de desenvolvimento e causar dores de cabeça, especialmente após um deploy. Felizmente, existe uma solução clara para o “Vite failed to fetch dynamically imported module [SOLUÇÃO]” que abordaremos neste artigo.

Este erro ocorre quando o Vite, na tentativa de carregar um módulo JavaScript em tempo de execução (geralmente para otimização de performance via code-splitting), não consegue encontrar o arquivo no caminho esperado. As causas são diversas, mas a raiz do problema frequentemente reside na configuração de caminhos base incorreta, particularmente em ambientes de produção ou servidores que não estão configurados para servir corretamente os arquivos estáticos.

Entendendo o Erro: Failed to fetch dynamically imported module

O Vite, como um bundler moderno, utiliza importações dinâmicas (import()) para carregar módulos sob demanda, o que ajuda a reduzir o tamanho inicial do bundle e melhorar o tempo de carregamento. Quando o navegador encontra um erro como "Vite failed to fetch dynamically imported module [SOLUÇÃO]", isso significa que a requisição HTTP para o arquivo do módulo falhou. Isso pode ser devido a:

  • Um caminho URL incorreto.
  • O arquivo não existe no servidor.
  • Problemas de permissão do servidor.
  • Configuração incorreta do servidor (ex: MIME types, regras de reescrita).

Na maioria dos casos, o problema está relacionado ao primeiro ponto: o caminho URL. Após a build do Vite, os arquivos são otimizados e colocados em um diretório de saída (geralmente dist). Se o seu servidor não souber de onde servir esses arquivos, ou se a aplicação espera que eles estejam em um caminho diferente do que o servidor oferece, o erro "Vite failed to fetch dynamically imported module [SOLUÇÃO]" irá aparecer.

A Raiz do Problema: A Configuração de base do Vite

A configuração mais comum para o erro “Vite failed to fetch dynamically imported module [SOLUÇÃO]” está diretamente ligada à propriedade base no arquivo vite.config.js. Esta propriedade define o caminho base a partir do qual os recursos públicos são servidos. Por padrão, base é '/', o que funciona perfeitamente para deployments na raiz de um domínio (ex: meusite.com/).

No entanto, se você estiver hospedando sua aplicação Vite em um subdiretório (ex: meusite.com/meu-app/) ou em plataformas como GitHub Pages, onde o caminho base não é a raiz, essa configuração padrão causará o erro. O Vite irá gerar URLs como /assets/index-XXXX.js, mas o servidor esperaria algo como /meu-app/assets/index-XXXX.js, resultando em requisições 404 para os módulos dinâmicos.

A SOLUÇÃO Definitiva para “Vite failed to fetch dynamically imported module”

A correção principal envolve ajustar a propriedade base no seu arquivo vite.config.js para que corresponda ao caminho onde sua aplicação será servida.

Passo 1: Ajustar vite.config.js

Abra seu arquivo vite.config.js (ou vite.config.ts) e localize ou adicione a propriedade base dentro do objeto de configuração:


// vite.config.js ou vite.config.ts
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react'; // Ou seu plugin de framework

export default defineConfig({
  plugins: [react()],
  // 1. Para deployments na raiz do domínio (default, não muda nada)
  // base: '/',

  // 2. Para deployments em subdiretórios (ex: 'meusite.com/meu-app/')
  //    Ou para GitHub Pages (ex: 'https://username.github.io/repo-name/')
  base: '/nome-do-seu-repositorio-ou-subdiretorio/',

  // 3. Para deployments onde você não tem controle total do base path,
  //    ou para servir via paths relativos (evitar 404s em alguns casos específicos)
  //    CUIDADO: Pode ter efeitos colaterais com assets que não são módulos JS
  // base: './',
});

Cenários Comuns:

  • GitHub Pages: Se o seu projeto está em um repositório chamado meu-app, a URL será https://username.github.io/meu-app/. Nesse caso, defina base: '/meu-app/'.
  • Subdiretório em Servidor Web: Se você está servindo sua aplicação em https://meusite.com/dashboard/, defina base: '/dashboard/'.
  • Caminhos Relativos (./): Use base: './' com cautela. Ele fará com que o Vite gere caminhos relativos para todos os assets. Isso pode resolver o “Vite failed to fetch dynamically imported module [SOLUÇÃO]” em alguns cenários de servidor onde o caminho absoluto da raiz não é consistente, mas pode levar a outros problemas com roteamento e URLs de imagem se não for manejado corretamente. Geralmente, especificar o caminho absoluto do subdiretório é a melhor prática.

Passo 2: Reconstruir o Projeto

Após alterar o vite.config.js, é crucial reconstruir seu projeto para que as mudanças sejam aplicadas:


npm run build
# ou
yarn build
# ou
pnpm build

Isso irá gerar uma nova pasta dist com os caminhos dos assets corrigidos.

Passo 3: Verificação de Servidor (Opcional, mas Importante)

Em alguns casos, mesmo com o base configurado corretamente, o servidor pode não estar configurado para lidar com SPAs (Single Page Applications) ou para servir os arquivos corretamente. Se você ainda estiver enfrentando o erro “Vite failed to fetch dynamically imported module [SOLUÇÃO]”, verifique:

  • Regras de Reescrita (Apache/Nginx): Para SPAs, você pode precisar de regras que redirecionam todas as requisições para index.html, permitindo que o roteador do seu framework (React Router, Vue Router) assuma o controle.
  • MIME Types: Certifique-se de que o servidor esteja servindo arquivos JavaScript (.js) com o MIME type correto (application/javascript). Embora menos comum com Vite, pode ser uma causa.

Conclusão

O erro “Vite failed to fetch dynamically imported module [SOLUÇÃO]” é um obstáculo comum, mas quase sempre resolvido com uma configuração adequada da propriedade base no vite.config.js. Lembre-se de entender onde sua aplicação será hospedada e ajustar o caminho base de acordo. Com essa correção simples, você garantirá que todos os módulos dinamicamente importados sejam encontrados e carregados corretamente, permitindo que sua aplicação Vite funcione sem problemas em produção.

Implemente essas dicas e diga adeus a este erro. Se precisar de mais detalhes sobre configuração de servidores específicos, deixe um comentário!

Marcos Costa

Sobre Marcos Costa

Desenvolvedor backend com foco em arquitetura de software, automação e produtos digitais.

Ver mais artigos