錯誤 HH411:未安裝庫 openzeppelin-solidity。嘗試使用 npm 安裝它(對於舊的 0.5.0 可靠程式碼)
我有像這樣的文件的solidity項目
pragma solidity ^0.5.0; import "openzeppelin-solidity/contracts/ownership/Ownable.sol";
當我嘗試編譯時,未安裝庫出現錯誤
npx hardhat compile Error HH411: The library openzeppelin-solidity, imported from contracts/....sol, is not installed. Try installing it using npm.
我試過安裝
npm install @openzeppelin/contracts
和與solidity v0.5.0 適當匹配的v3.1.0
npm install @openzeppelin/contracts@3.1.0
但得到同樣的錯誤。
那麼這個
openzeppelin-solidity
庫是什麼,如何安裝呢?
感謝@zmy 評論,指向https://www.npmjs.com/package/openzeppelin-solidity。
2.3.0 是 npm 系統資料庫上的最早版本,如“@openzeppelin/contracts”
https://www.npmjs.com/package/@openzeppelin/contracts
openzeppelin-solidity 有舊版本
https://www.npmjs.com/package/ openzeppelin-solidity
所以安裝應該像
npm i openzeppelin-solidity@2.2.0
和 2.1.0-2.5.1 範圍內的版本(對於solidity v0.5.0)
2.1.0 是針對solidity v0.5.0 的第一個版本 https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/CHANGELOG.md#210-2019-01-04
3.1.0 是最後一個 openzeppelin-contracts 版本使用solidity v0.5.0 https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/CHANGELOG.md#320-2020-09-10
3.0.0 (2020-04-20) AccessControl:新契約用於管理系統中的權限,替換 Ownable。
所以自 v3.0.0 起 Ownable 不可用
https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/CHANGELOG.md#300-2020-04-20
最新的是 v4.2.0 (2021-06-30) , 自 v4.0 起需要solidity 0.8.0
你的程式碼是錯誤的。正確的程式碼應該是這樣的。
import "@openzeppelin/contracts/access/Ownable.sol";
沒有這樣的庫
openZeppelin-solidity
,正確的庫是@openZeppelin/contracts