Frequentemente, depois de instalar o pacote Filament Admin Panel em um novo projeto Laravel, você pode se deparar com um problema recorrente. A página login
continua recarregando sem nenhum erro, e um ponto de interrogação “?” é anexado ao URL todas as vezes.
É provável que esse problema ocorra quando você tenta acessar a página de login por meio da URL localhost
e também
persiste quando você ativa o aplicativo em um servidor de produção.
Esta postagem do blog irá orientá-lo sobre como diagnosticar e resolver esse problema.
Compreendendo o erro Livewire 404 no Filament
Esse problema pode ser rastreado até um erro “404 not found” que aparece no console do navegador.
Este erro está associado ao livewire.js
, um componente crítico do Livewire - o pacote do qual o Filament depende. Essencialmente, o aplicativo Laravel não pode localizar este arquivo JavaScript, resultando em um ciclo de redirecionamento com falha na página de login.
Solução 1: publicação de assets Livewire
Um dos métodos mais diretos para resolver esse problema é publicar os assets Livewire usando o seguinte comando:
php artisan vendor:publish --force --tag=livewire:assets
A execução deste comando publicará os recursos no diretório /public/vendor/livewire/livewire.js
, que o Laravel
agora pode acessar facilmente. No entanto, essa correção pode não ser suficiente por conta própria; você ainda pode precisar ajustar o asset_url
no arquivo de configuração do Livewire.
Solução 2: Modificando o asset_url na Configuração do Livewire
Outra solução prática envolve modificar a configuração asset_url
diretamente no arquivo de configuração do
Livewire (config/livewire.php
). No entanto, antes de fazer isso, você precisará publicar o arquivo de configuração usando este comando:
php artisan vendor:publish --tag=livewire:config
Depois de publicar o arquivo de configuração, localize a configuração asset_url
no arquivo config/livewire.php
e altere-a para corresponder ao seu domínio local ou de produção, assim:
'asset_url' => "http://localhost/my_project/public",
Mas eu prefiro usar a configuração APP_URL
do aplicativo para definir a variável Livewire asset_url
:
'asset_url' => env(APP_URL),
Solução 3: Configuração do NGINX
Para aqueles que usam o NGINX como servidor, o problema pode resultar de como o NGINX atende a arquivos estáticos.
Por padrão, o NGINX serve diretamente e armazena em cache arquivos estáticos sem envolver o interpretador PHP.
Portanto, ele nunca chega à parte do PHP que constrói o arquivo livewire.js
dinamicamente quando não consegue encontrar o arquivo.
Para resolver isso, ajuste sua configuração do NGINX para verificar primeiro o arquivo estático e, se ele não existir, passe a solicitação para o PHP-FPM. Isso pode ser feito adicionando a seguinte linha na diretiva location na configuração do NGINX:
try_files $uri /index.php?$query_string;
Lembre-se de limpar o cache de configuração usando o comando php crafts config:clear
depois de fazer essas
alterações para garantir que o Laravel comece a usar a configuração atualizada.
Considerações Finais
Embora essas correções provavelmente resolvam o problema, é essencial observar que o problema subjacente está na
decisão da Livewire de usar a URL localhost
como asset_url
padrão. Idealmente, o URL padrão deve ser obtido
dinamicamente da configuração APP_URL
no arquivo .env
.
É esperado que esse comportamento será ajustado em versões futuras do Livewire.
Comentários