Substrate node template执行cargo build --release报E0277错误求助
问题原因
- 核心是你使用的cargo/Rust 1.51.0版本与Substrate依赖的
pwasm-utils v0.18.2版本存在语法不兼容:该版本pwasm-utils的代码直接将固定长度数组作为参数传入extend()方法,而Rust 1.53版本之前,固定长度数组没有默认实现IntoIteratortrait,无法直接被迭代消费,因此触发该编译错误。 - 另一诱因是你拉取的Substrate节点模板版本过旧,配套依赖未适配Rust语法变更。
解决步骤
- 方案一:降级Rust工具链到官方适配的1.50.0版本
执行如下命令切换工具链:
安装对应版本的Wasm编译目标:rustup install 1.50.0 && rustup default 1.50.0
清除缓存重新编译即可:rustup target add wasm32-unknown-unknown --toolchain 1.50.0cargo clean && cargo build --release - 方案二:手动打依赖补丁(无需降级工具链)
在项目根目录的Cargo.toml文件末尾添加如下补丁配置,强制使用修复了该语法问题的pwasm-utils版本:
重新执行编译命令即可。[patch.crates-io] pwasm-utils = { version = "0.18.3", features = ["std"] }
内容的提问来源于stack exchange,提问作者Cuong Nguyen
相关产品推荐
相关产品推荐

