Motoko中Candid UI不显示共享查询方法checkBalance问题
问题:Motoko查询方法checkBalance未在Candid UI显示且CLI调用失败
我正在使用Motoko和DFX 0.28.0开发一个简单的Internet Computer dapp,后端canister(dbank_backend)中包含一个定义为public shared query的checkBalance函数,代码如下:
import Debug "mo:base/Debug"; import Nat "mo:base/Nat"; actor DBank { var currentValue: Nat = 300; public func topUp(amount: Nat): async Nat { currentValue += amount; Debug.print("topUp called, currentValue = " #Nat.toText(currentValue)); return currentValue; }; public func withdraw(amount: Nat): async Nat{ let tempVal: Int = currentValue - amount; if(tempVal>=0){ currentValue -= amount; Debug.print("currentValue = " #Nat.toText(currentValue)); return currentValue; } else { Debug.print("Balance too low for withdrawal"); return currentValue; } }; public shared query func checkBalance(): async Nat{ return currentValue; }; }
尽管checkBalance已声明为public shared query,但它并未显示在Candid UI中。我尝试手动调用该方法:
dfx canister call dbank_backend checkBalance --query
得到如下错误:
Error: The replica returned a rejection error: Canister has no query method 'checkBalance'
我已尝试的操作:
- 确认
checkBalance已声明为public shared query - 删除
.dfx文件夹并重新部署 - 使用如下命令检查Candid元数据:
dfx canister metadata dbank_backend candid:service
但checkBalance仍未在UI中显示,也无法响应CLI调用。
内容的提问来源于stack exchange,提问作者Priya Gurung
相关产品推荐
相关产品推荐

