Solidity 库 @openzeppelin/contracts/access/Ownable.sol 没有解析 ownerOnly()

Solidity library @openzeppelin/contracts/access/Ownable.sol is not resolving ownerOnly()

我正在尝试将我的合同切换为使用“导入“@openzeppelin/contracts/access/Ownable.sol”',但出现以下错误

contracts/InvoiceTracker.sol:93:9: DeclarationError: 未声明的标识符。 ownerOnly()

对于此代码: function addClient(address _clientID, string memory _name) public 只有所有者() noDupClient(_clientID, _name) {}

我已经安装: "@openzeppelin/cli": "^2.8.2", "@openzeppelin/contracts": "^3.1.0", "@openzeppelin/test-helpers": "^0.5.6”

你能告诉我为什么会这样吗?

你应该调用 onlyOwner() 而不是 ownerOnly()

如果要导入 @openzeppelin/contracts/access/Ownable.sol,则必须调用 onlyOwner()。您不能将 onlyOwner() 更改为 ownerOnly()。