实操Substrate「Create a Pallet」教程构建节点时出现模块无法识别报错
报错现象
完成Substrate「Create a Pallet」教程实操后构建节点,自定义Pallet模块无法被识别,报错截图如下:
排查与解决方案
- 检查
runtime/Cargo.toml配置
确认已正确添加自定义Pallet依赖,路径、版本填写无误;同时检查[features]区块下的std列表中已添加你的Pallet的std特性,示例如下:
漏加std特性是模块识别失败的高频原因。[dependencies] pallet-your-name = { path = "../pallets/pallet-your-name", default-features = false, version = "4.0.0-dev" } [features] std = [ # 其他现有依赖的std配置 "pallet-your-name/std", ] - 检查
runtime/src/lib.rs配置- 确认已正确引入Pallet:
use pallet_your_name; - 确认已为Runtime实现Pallet的Config trait,所有关联类型都已正确匹配配置
- 确认已在
construct_runtime!宏中添加Pallet声明,索引值未与现有Pallet重复,格式符合要求,示例如下:
construct_runtime!( pub enum Runtime where Block = Block, NodeBlock = opaque::Block, UncheckedExtrinsic = UncheckedExtrinsic { // 其他现有Pallet YourPallet: pallet_your_name = 10, } ); - 确认已正确引入Pallet:
- 检查Pallet自身代码合法性
进入Pallet目录执行cargo check,确认Pallet本身无语法错误,lib.rs顶部已添加#![cfg_attr(not(feature = "std"), no_std)]声明。 - 清理构建缓存重试
执行cargo clean清理旧缓存后,重新运行构建命令cargo build --release,排除缓存导致的识别异常。
内容的提问来源于stack exchange,提问作者dharjeezy
相关产品推荐
相关产品推荐

