You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 15:42:05