跳至內容
0%

如何在 webpack 5 中 polyfill node 核心模組

最後更新:2022年3月17日1 分鐘閱讀

在本教學中,你將學習如何使用 react-app-rewired 套件,在 webpack 5 以上版本中 polyfill node core modules,包括安裝所需的相依套件,以及覆寫預設的 webpack 設定。

什麼原因導致 polyfill node core module 錯誤?

在 webpack ___ 的最新更新之前,webpack < 5 預設會包含 NodeJS polyfills。由於目前版本的 webpack 不再預設包含 NodeJS polyfills,這導致使用 create-react-app 搭配 webpack > 5 建置應用程式,並使用 web3.js 和 alchemyweb3.js library 的開發者出現問題。

以下是 polyfill node core module 錯誤的樣子:

4 個簡單步驟修復 webpack 5 中的 polyfill node core modules

create-react-app 與 polyfill 錯誤的主要問題在於,create-react-app 預設將 webpack 設定檔隱藏在 node-modules 裡,並在建置時才產生該檔案,導致開發者無法修改它。

幸運的是,有一個套件 react-app-rewired,能讓開發者輕鬆編輯 webpack 設定檔,修復 polyfill node core module 錯誤。

1. 安裝 react-app-rewired

首先,使用你偏好的套件管理工具安裝 reach-app-rewired 套件。

使用 yarn 安裝 react-app-rewired 套件:

使用 npm 安裝 react-app-rewired 套件:

2. 安裝缺少的相依套件

接下來,安裝以下缺少的相依套件:

  • crypto-browserify
  • stream-browserify
  • assert
  • stream-http
  • https-browserify
  • os-browserify
  • url

使用 yarn 安裝缺少的相依套件:

yarn add process crypto-browserify stream-browserify assert stream-http https-browserify os-browserify url buffer

使用 npm 安裝缺少的相依套件:

3. 覆寫 create-react-app 的 webpack 設定檔

在專案的根目錄下,建立一個名為 config-overrides.js 的新檔案,並加入以下程式碼:

這段 config-overrides.js 程式碼片段告訴 webpack 如何解析瀏覽器中支援 web3 libraries 和 wallet providers 所需的缺少相依套件。

4. 覆寫 package.json 以包含 webpack 設定

在 package.json 檔案中,將以下三個 scripts 欄位的 react-scripts 替換為 react-app-rewired scripts,以更新 webpack 設定:

  • start
  • build
  • test

以下是替換 react-scripts 之前的 package.json 檔案:

以下是將 react-scripts 替換為 react-app-rewired scripts 之後的 package.json 檔案:

就是這樣!

現在,polyfill node core module 錯誤應該已經修復,缺少的 NodeJS polyfills 應該已包含在你的應用程式中,並且你的應用程式應該可以與 web3.js 和 Alchemyweb3.js library 正常運作。

Alchemy 電子報

搶先掌握最新發布消息

訂閱我們的電子報

取得 Alchemy 最新產品更新與資源

A
O
D
+
超過 80,000 名訂閱者

輸入您的電子郵件地址,即表示您同意接收我們的行銷通訊與產品更新。您了解 Alchemy 會依照我們的隱私權聲明處理所收到的資訊。您可以隨時取消訂閱。