升级Substrate后`DepartmentDetails未实现scale_info::TypeInfo`报错如何解决?
错误原因
你使用的 monthly-2021-10 版本 Substrate 已默认启用 Metadata V14 规范,所有在链上存储中使用的自定义结构体必须实现 scale_info::TypeInfo trait 才能正确生成链上元数据,你定义的 DepartmentDetails 结构体当前未派生该 trait,因此触发编译错误。
可行解决方案
- 首先在结构体定义的文件头部导入
TypeInfo依赖:
use scale_info::TypeInfo;
- 修改
DepartmentDetails结构体的派生宏列表,追加TypeInfo派生:
#[derive(PartialEq, Eq, PartialOrd, Ord, Default, Clone, Encode, Decode, RuntimeDebug, TypeInfo)] pub struct DepartmentDetails { pub name: Vec<u8>, pub location: Vec<u8>, pub details: Vec<u8>, pub departmentid: u128, }
- 检查对应 pallet 的
Cargo.toml配置,确保scale-info依赖和 feature 配置正确:
[dependencies] scale-info = { version = "2.0", default-features = false, features = ["derive"] } [features] default = ["std"] std = [ # 保留原有其他std配置项 "scale-info/std", ]
修改完成后重新编译即可解决该 trait 未实现的报错。
内容的提问来源于stack exchange,提问作者Amiya Behera
相关产品推荐
相关产品推荐

