You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用_tokenURIs出现未声明标识符错误,求解决方案及原因

错误原因

你代码里用到的_tokenURIs变量没有在合约中声明,Solidity编译器找不到这个标识符,所以抛出了“Undeclared identifier”错误。编译器提示你是不是打错成_tokenURI或tokenURI,是因为这两个名称在标准代币合约(比如OpenZeppelin实现)里更常见。

解决方案
  1. 在合约的状态变量区域(所有函数之外)声明_tokenURIs映射,用来存储每个代币ID对应的URI:
mapping(uint256 => string) private _tokenURIs;
  1. 确保合约中包含MetadataUpdate事件的声明,如果你的合约没有继承自带该事件的父合约,需要手动添加:
event MetadataUpdate(uint256 indexed tokenId);

修改后的完整代码示例:

// 声明MetadataUpdate事件(按需添加)
event MetadataUpdate(uint256 indexed tokenId);

// 声明存储代币URI的映射
mapping(uint256 => string) private _tokenURIs;

function setTokenURI (uint256 bujiId, string memory _tokenURI) internal virtual {
    _tokenURIs[bujiId] = _tokenURI;
    emit MetadataUpdate(bujiId);
}

内容的提问来源于stack exchange,提问作者Wisnu Wardhana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 05:52:01