Motoko训练营第一章代码在Gitpod中Canister无法启动问题
问题修复方案
代码中的两处关键错误:
Buffer类型声明未指定泛型参数
原代码中let goals : Buffer.Buffer = Buffer.Buffer<Text>(0);的类型标注不完整,Buffer.Buffer是泛型类型,必须明确指定其存储的元素类型(此处为Text)。状态修改函数缺少
shared修饰符setManifesto和addGoal作为需要外部调用的公共函数,必须添加shared关键字,否则无法被canister外部访问,同时会触发编译错误。
修复后的完整代码:
import Buffer "mo:base/Buffer"; actor { let name : Text = "deFiSport"; var manifesto : Text = "deFiSport is a DAO that rules few canisters & dApps allowing young sportsmen & sportwomen to earn money thanks to their performances, image & more."; let goals : Buffer.Buffer<Text> = Buffer.Buffer<Text>(0); public shared query func getName() : async Text { return name; }; public shared query func getManifesto() : async Text { return manifesto; }; public shared func setManifesto(newManifesto : Text) : async () { manifesto := newManifesto; return; }; public shared func addGoal(newGoal : Text) : async () { goals.add(newGoal); return; }; public shared query func getGoals() : async [Text] { return Buffer.toArray(goals); }; };
额外说明:
- 你之前修复的
manifesto变量末尾分号问题处理正确,这是初始报错的原因之一。 - 修复完成后,在Gitpod中重新执行
dfx deploy即可正常启动canister。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

