首頁  >  問答  >  主體

使用React.lazy進行webpack程式碼分割的調試方法

<p>我正在使用<code>React.lazy</code>嘗試將一些程式碼從我的主應用程式中拆分出來,但它沒有按照我期望的方式工作,我很難弄清楚如何調試。 </p> <p>我的程式碼大致如下:</p> <pre class="brush:php;toolbar:false;">// index.js import React from 'react'; import { LibraryUtils } from './library/utils'; const Component = React.lazy(() => import('./component')); … // component.js import React from 'react'; import LibraryComponent from './library/component'; ...</pre> <p>我想要的是:</p> <ul> <li>vendors.chunk.js:反應</li> <li>main.chunk.js:index.js</li> <li>main-1.chunk.js:元件.js</li> <li>library-0.chunk.js:函式庫/utils</li> <li>library-1.chunk.js:函式庫/元件</li> <li>index.html:main.chunk.js、library-0.chunk.js、vendors.chunk.js</li> <li>非同步區塊:main-1.chunk.js, library-1.chunk.js</li> </ul> <p>我拿到的是:</p> <ul> <li>vendors.chunk.js:反應</li> <li>main.chunk.js:index.js component.js</li> <li>library.chunk.js:函式庫/utils 函式庫/元件</li> <li>index.html:main.chunk.js、library.chunk.js、vendors.chunk.js</li> <li>非同步區塊:無</li> </ul> <p>因此,我的初始頁面載入需要載入所有的JS,從而導致效能較差。 </p> <p>我如何強制webpack將<code>library</code>拆分成多個區塊,以便我可以利用非同步區塊?更好的是,我該如何調試這樣的問題? </p> <p>我的配置大致如下:</p> <pre class="brush:php;toolbar:false;">splitChunks: { chunks: 'all', cacheGroups: { library: { test: /[\\/]library[\\/]/, }, }, }</pre></p>
P粉001206492P粉001206492439 天前415

全部回覆(1)我來回復

  • P粉795311321

    P粉7953113212023-08-30 14:02:04

    問題是意外包含了babel-plugin-dynamic-import-node,它將動態導入(用於非同步載入)轉換為節點環境中的常規require,從而阻止產生任何非同步區塊。解決方案是刪除它(或僅在運行單元測試時包含它)。

    回覆
    0
  • 取消回覆