J'utilise React.lazy
pour essayer de séparer du code de mon application principale, mais cela ne fonctionne pas comme prévu et j'ai du mal à comprendre comment le faire. déboguez-le.
Mon code est à peu près le suivant :
// index.js importer React depuis « react » ; importer { LibraryUtils } depuis './library/utils' ; const Component = React.lazy(() => import('./component')); ... // composant.js importer React depuis « react » ; importer LibraryComponent depuis './library/component' ; ...Ce que je veux, c'est :
Ce que j'obtiens est :
En conséquence, le chargement initial de ma page nécessite le chargement de tout le JS, ce qui entraîne de mauvaises performances.
Comment forcer Webpack à diviser la library
en plusieurs morceaux afin de pouvoir profiter des morceaux asynchrones ? Mieux encore, comment déboguer un problème comme celui-ci ?
Ma configuration est à peu près la suivante :
splitChunks : { morceaux : 'tous', Groupes de cache : { bibliothèque: { test : /[\/]bibliothèque[\/]/, }, }, }
Le problème est l'inclusion inattendue de
babel-plugin-dynamic-import-node
, qui convertit les importations dynamiques (utilisées pour le chargement asynchrone) en exigences régulières dans l'environnement de nœud, empêchant la génération de blocs asynchrones. La solution est de le supprimer (ou de l'inclure uniquement lors de l'exécution de tests unitaires).