Skip to content

Résolution de problèmes 🧐

Rechargements fréquents

si vous rencontrez des rechargements intempestifs de votre application, lisez la section https/http en développement.

Flash unstyles content

si vous souhaitez réduire le FOUC (flash of unstyled content), lisez les Astuces : fichier css comme point d'entrée.

Assets < 4kb

Si vous faites référence à des fichiers d'assets de moins de 4kb. An exception has been thrown during the rendering of a template (assets "assets/images/small-asset-less-than-4kb.png" not found in manifest file "/path-to-your-project/public/build/manifest.json".) si vous faites référence à un fichier d'asset de moins de 4kb, Vite aura choisi par défaut de rendre son contenu en ligne. Vous ne pourrez donc pas faire référence à ce fichier en utilisant la fonction Twig asset.

twig
<img src="{{ asset('assets/images/logo-symfony-less-4kb.png') }}">

Une solution peut-être de demander explicitement à Vite de ne pas rendre en ligne ses assets en définissant la configuration de vite build.assetsInlineLimit à 0.

Pas de style dans vos pages d'erreur

Lorsqu'une erreur se produit et qu'une page 500 est générée, il peut arriver que vos scripts ou styles ne soient pas chargés.

Lorsque vous appelez vite_entry_link_tags ou vite_entry_script_tags, le bundle garde en mémoire les balises html générées ce qui permet de ne pas générer 2 fois les mêmes balises. Ce sera le comportement attendu dans la plupart des cas.

Cependant, dans le cas où une erreur est levée après l'appel de vite_entry_link_tags et que vous faites un nouvel appel à vite_entry_link_tags dans votre template twig d'affichage d'erreur il est probable que certaines balises manqueront.

Ceci peut-être résolu en écoutant l'événement ExceptionEvent et en faisant un reset des balises générées.

php
use Pentatrion\ViteBundle\Service\EntrypointRenderer;
use Symfony\Component\EventDispatcher\Attribute\AsEventListener;
use Symfony\Component\HttpKernel\Event\ExceptionEvent;

#[AsEventListener]
class ExceptionListener
{
    public function __construct(private readonly EntrypointRenderer $entrypointRenderer)
    {
    }

    public function __invoke(ExceptionEvent $event): void
    {
        if ($event->getThrowable() instanceof \Twig\Error\RuntimeError) {
            $this->entrypointRenderer->reset();
        }
    }
}

Plus de détails #38 when an error occurs and a 500 page is generated the css is not loaded.

Publié sous la licence MIT.