Hardhat
使用安全帽部署合約時無法讀取未定義的屬性(讀取“gteHardfork”)
我正在關注本教程 - https://www.freecodecamp.org/news/solidity-tutorial-hardhat-nfts/ 但是在執行時
npx 安全帽測試
或者
npx 安全帽執行腳本/deploy.js
我收到以下錯誤:
TypeError: Cannot read properties of undefined (reading 'gteHardfork') at new Transaction (node_modules\@ethereumjs\tx\src\legacyTransaction.ts:111:21) at new FakeSenderTransaction (node_modules\hardhat\src\internal\hardhat-network\provider\transactions\FakeSenderTransaction.ts:92:5) at HardhatNode._getFakeTransaction (node_modules\hardhat\src\internal\hardhat-network\provider\node.ts:1118:12) at HardhatNode.estimateGas (node_modules\hardhat\src\internal\hardhat-network\provider\node.ts:506:27) at processTicksAndRejections (node:internal/process/task_queues:96:5) at runNextTicks (node:internal/process/task_queues:65:3) at listOnTimeout (node:internal/timers:526:9) at processTimers (node:internal/timers:500:7) at EthModule._estimateGasAction (node_modules\hardhat\src\internal\hardhat-network\provider\modules\eth.ts:421:9) at HardhatNetworkProvider.request (node_modules\hardhat\src\internal\hardhat-network\provider\provider.ts:99:18)
當我在文章中引用的repo上嘗試相同的命令時,那裡一切正常。我已經嘗試匹配所有依賴版本並將我的整個項目與它進行比較,但問題並沒有消失。
可能是什麼原因?
升級安全帽應該可以解決您的問題:
npm i --save-dev hardhat@latest
發生這種情況的原因是舊版本的 hardhat 和新版本的 ethereumjs(Hardhat 在後台使用的 EVM 實現)之間存在一些兼容性問題。
該命令在範例 repo 中執行良好但在您執行命令時無法正常執行的原因是 repo 有一個
package-lock.json
文件,該文件可能具有 ethereumjs 的兼容版本。