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

Flow模拟器部署导入FungibleToken的自定义合约报类型不兼容错误咨询

报错原因
  • 核心合约重复部署冲突:Flow模拟器默认已经将FungibleToken等标准核心合约预置部署在地址ee82856bf20e2aa6,你的配置里既给FungibleToken设置了该预置地址作为别名,又在部署列表里将FungibleToken加入了自定义账户的部署队列,相当于运行环境中同时存在两份部署地址不同、逻辑完全一致的FungibleToken合约。Cadence采用标称类型系统,不同地址部署的合约属于完全独立的类型,导致自定义合约引用的FungibleToken类型和预期的标准类型不匹配,触发FungibleToken.Receiver类型合规报错。
  • 配置语法错误:你的flow.json部署列表中,"FungibleToken"和"ExampleToken"两项之间缺少逗号,属于JSON语法错误,也会干扰部署流程的正常执行。
解决方案
  • 修正flow.json配置:删除部署列表中自定义账户下的"FungibleToken"项,不需要自行重复部署模拟器预置的核心合约,同时补上JSON数组项之间的逗号,修正后的配置参考如下:
{
    "contracts": {
        "FungibleToken": {
            "source": "./cadence/contracts/FungibleToken.cdc",
            "aliases": {
                "emulator": "ee82856bf20e2aa6"
            }
        },
        "ExampleToken": "./cadence/contracts/ExampleToken.cdc"
    },
    "deployments": {
        "emulator": {
            "emulator-account": [
                "ExampleToken"
            ]
        }
    }
}
  • 可选优化合约导入写法:如果你的Flow CLI版本支持别名自动替换,可以保持现有相对路径导入写法,也可以直接指向预置地址减少路径解析开销,写法如下:
// ExampleToken.cdc
import FungibleToken from 0xee82856bf20e2aa6
  • 清理历史错误部署数据:如果之前已经错误将FungibleToken部署到了自定义账户,先停止模拟器,删除默认生成的./flowdb缓存文件夹,重启模拟器后再执行部署操作即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:24:09