Resolução de Problemas
Consulte também o guia de resolução de problemas da Rollup para obter mais informações.
Se as sugestões neste documento não funcionarem, tente publicar as questões nas Discussões da GitHub ou no canal de #help
da Discord do País de Vite (Vite Land).
Interface de Linha de Comando
Error: Cannot find module 'C:\foo\bar&baz\vite\bin\vite.js'
O caminho para a pasta do teu projeto talvez inclua &
, o qual não funciona com o npm
no Windows (npm/cmd-shim#45).
Tu precisarás ou de:
- Mudar para um outro gestor de pacote (por exemplo,
pnpm
,yarn
) - Remover o
&
do caminho do teu projeto
Servidor de Desenvolvimento
Requisições são Bloqueada para Sempre
Se estiveres utilizando Linux, limites de descritor de ficheiro e limites de inotify
podem estar causando o problema. Já que a Vite não empacota a maior parte dos ficheiros, os navegadores podem requisitar muitos ficheiros os quais requerem muitos descritores de ficheiro, ultrapassando o limite.
Para resolver isto:
Aumente o limite do descritor de ficheiro pelo
ulimit
shell# Consulte o limite atual $ ulimit -Sn # Mude o limite (temporário) $ ulimit -Sn 10000 # Tu podes também precisar mudar o limite manualmente # Reinicie o teu navegador
Aumente os seguintes limites relacionado com
inotify
pelosysctl
shell# Consulte os limites atuais $ sysctl fs.inotify # Mude os limites (temporário) $ sudo sysctl fs.inotify.max_queued_events=16384 $ sudo sysctl fs.inotify.max_user_instances=8192 $ sudo sysctl fs.inotify.max_user_watches=524288
Se os passos acima não funcionarem, podes tentar adicionar DefaultLimitNOFILE=65536
como uma configuração não comentada aos seguintes ficheiros:
- /etc/systemd/system.conf
- /etc/systemd/user.conf
Para Ubuntu Linux, podes precisar de adicionar a linha * - nofile 65536
para o ficheiro /etc/security/limits.conf
ao invés de atualizar os ficheiros de configuração do systemd
.
Nota que estas definições persistem mas uma reinicialização é necessária.
Requisições de Rede Impedem o Carregamento
Quando estiveres a usar um certificado de SSL auto-assinado, o Chrome ignora todas diretivas do armazenamento de recurso de consulta imediata (aka, caching) e recarrega o conteúdo. A Vite depende das diretivas de armazenamento de recurso de consulta imediata.
Para resolver o problema use um certificado de SSL de confiança.
Consulte: Cache problems, Chrome issue
macOS
Tu podes instalar um certificado de confiança através da Interface da Linha de Comando com este comando:
security add-trusted-cert -d -r trustRoot -k ~/Library/Keychains/login.keychain-db your-cert.cer
Ou, importando-o pela aplicação Keychain Access e atualizando a confiança do teu certificado para "Always Trust."
431 Campos do Cabeçalho da Requisição Muito Grandes
Quando o servidor ou servidor de websocket recebe um cabeçalho de HTTP grande, a requisição será largada e o seguinte aviso será exibido.
Server responded with status code 431. See https://vitejs.dev/guide/troubleshooting.html#_431-request-header-fields-too-large.
(Tradução) O servidor respondeu com o código de estado 431. Consulte https://pt.vitejs.dev/guide/troubleshooting.html#_campos-do-cabeçalho-da-requisição-muito-grandes.
Isto porque a Node.js limita o tamanho do cabeçalho da requisição para mitigar o CVE-2018-12121.
Para evitar isto, tente reduzir o tamanho do cabeçalho da tua requisição. Por exemplo, se o cookie for longo, elimine-o. Ou podes utilizar a --max-http-header-size
para mudar o tamanho máximo do cabeçalho.
Substituição de Módulo Instantânea
A Vite Deteta uma Mudança de Ficheiro mas a HMR não está a Funcionar
Tu talvez estejas importando um ficheiro com uma caixa diferente. Por exemplo, src/foo.js
existe e src/bar.js
contém:
import './Foo.js' // deveria ser './foo.js'
Problema relacionado: #964
A Vite não Deteta uma Mudança de Ficheiro
Se estiveres executando a Vite com o WSL2, a Vite não consegue observar mudanças de ficheiro em algumas condições. Consulte a opção server.watch
.
Um Recarregamento Completo Acontece no Lugar da HMR
Se a HMR não for manipulada pela Vite ou uma extensão, um recarregamento completo acontecerá.
Além disto se houver um laço de dependência, um recarregamento completo acontecerá. Para resolver isto, tente a remoção do laço.
Alto Número de Atualizações de HMR na Consola
Isto pode ser causado por uma dependência circular. Para resolver isto, tente quebrar o laço.
Construção
O Ficheiro Construído não Funciona por Causa do Erro de CORS
Se o ficheiro HTML de saída foi aberto com o protocolo file
, os programas (ou scripts se preferires) não executarão com o seguinte erro.
Access to script at 'file:///foo/bar.js' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, isolated-app, chrome-extension, chrome, https, chrome-untrusted.
(Tradução) O acesso ao programa em 'file:///foo/bar.js' a partir da origem 'null' foi bloqueada pela política de CORS: As requisições de origem cruzadas apenas são suportadas para os esquemas de protocolo: http, data, isolated-app, chrome-extension, chrome, https, chrome-untrusted.
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at file:///foo/bar.js. (Reason: CORS request not http).
(Tradução) Requisição de Origem Cruzada Bloqueada: A Mesma Política de Origem desautoriza a leitura do recurso em file:///foo/bar.js. (Motivo: Requisição de CORS não é de http).
Consulte o Motivo: Requisição de CORS não é HTTP - HTTP | MDN para obter mais informações a respeito do por quê isto acontece.
Tu precisarás acessar o ficheiro com o protocolo de http
. A maneira mais fácil de alcançar isto é executar o npx vite preview
.
Outros
Módulo Exposto para Compatibilidade de Navegador
Quando usares um módulo de Node.js no navegador, a Vite produzirá o seguinte aviso.
Module "fs" has been externalized for browser compatibility. Cannot access "fs.readFile" in client code.
(Tradução) O módulo "fs" foi exposto para compatibilidade de navegador. Não podes acessar "fs.readFile" no código do cliente.
Isto porque a Vite não faz automaticamente o "polyfill" de módulos da Node.js.
Nós recomendamos evitar módulos de Node.js para o código do navegador para reduzir o tamanho do pacote, embora possas adicionar os "polyfill" manualmente. Se o módulo é importado a partir de uma biblioteca de terceiro (que destina-se a ser usada no navegador), é aconselhado reportar o problema para a respetiva biblioteca.
Ocorre Erro de Sintaxe / Erro de Tipo
A Vite não consegui manipular e não suporta o código que só executa no modo não restrito (modo desleixado). Isto porque a Vite utiliza Módulo de ECMAScript e sempre é modo restrito dentro do Módulo de ECMAScript.
Por exemplo, podes ver estes erros.
[ERROR] With statements cannot be used with the "esm" output format due to strict mode
(Tradução) [ERRO] a expressão
with
não pode ser utilizada com o formato de saída "esm" por causa do modo estrito
TypeError: Cannot create property 'foo' on boolean 'false'
(Tradução) Erro de Tipo: Não possível criar a propriedade
'foo'
sobre o booleano 'false
'
Se estes códigos são utilizados dentro de dependências, poderias utilizar patch-package
(ou yarn patch
ou pnpm patch
) por uma escotilha de saída.
Extensões de Navegador
Algumas extensões de navegador (como bloqueadores de anúncios) podem impedir o cliente da Vite de enviar requisições para o servidor de desenvolvimento da Vite. Tu podes ver um ecrã branco sem erros registados neste caso. Tente desativar as extensões se tiveres este problema.