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

Foundry测试中stdstore.target调用编译报错,求排查原因

问题原因及解决办法

这个报错是因为Foundry的StdStorage API版本不兼容导致的:

  • 旧版Foundry的StdStore使用.target()方法指定目标合约,但在较新的版本中,该方法已被移除,替换为.address()方法,或者可直接在链式调用中传入合约地址。
  • 你参考的示例代码基于旧版Foundry,而当前使用的是更新版本,因此编译器找不到target成员。

修复步骤

将原来的stdstore.target(...)调用替换为stdstore.address(...),示例如下:

// 原错误写法
uint256 slot = stdstore.target(address(mockERC721)).sig("ownerOf(uint256)").with_key(tokenId).find();

// 修复后写法
uint256 slot = stdstore.address(address(mockERC721)).sig("ownerOf(uint256)").with_key(tokenId).find();

也可以直接传入合约实例(若为接口类型):

uint256 slot = stdstore.address(mockERC721).sig("ownerOf(uint256)").with_key(tokenId).find();

如果问题仍存在,可检查Foundry版本:

  • 执行foundryup更新到最新版本,确保StdStorage的API与代码调用匹配。
  • 查阅Foundry官方文档中StdStorage的最新用法,确认链式调用的正确格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 01:57:03