Hardhat

使用安全帽部署合約時無法讀取未定義的屬性(讀取“gteHardfork”)

  • November 4, 2021

我正在關注本教程 - 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 的兼容版本。

引用自:https://ethereum.stackexchange.com/questions/112750