编译134_flatten.sol合约报expected identifier but got 'Number'错误如何解决?
Solidity编译报错排查结果
核心报错原因
你遇到的expected identifier but got 'Number'错误由两个语法问题共同导致,完全匹配你给出的报错位置特征:
- 合约命名违反Solidity标识符规则
Solidity要求所有标识符(合约名、变量名、函数名等)必须以字母或下划线_开头,禁止直接以数字作为开头。你当前代码中直接用134作为合约名,编译器在第1733行第10个字符的位置遇到数字1时,无法将其识别为合法的合约标识符,直接抛出对应错误。 - 父类合约名称拼写错误且存在多余特殊字符
你代码中父类写为ERC71PresetMinterPauserAutoId,存在两处问题:一是少写了数字2,正确的OpenZeppelin预设ERC721合约名称为ERC721PresetMinterPauserAutoId`;二是中间多了一个多余的反引号,属于输入失误,需要删除。
修复方案
修改合约定义行,调整合约名、修正父类名称即可,修复后的完整代码片段如下:
contract Contract134 is ERC721PresetMinterPauserAutoId { constructor() public ERC721PresetMinterPauserAutoId("134", "134", "https://protomock.com:5000/item/view/134/") {} }
内容的提问来源于stack exchange,提问作者Cointrademart
相关产品推荐
相关产品推荐

