NEAR cli 合约调用有效,但从具有相同参数的 js sdk 调用时失败

NEAR cli contract call works but fails when called from js sdk with same params

我在 Near 区块链上有一份合约 运行。它接受存款作为付款方式,并在方法上具有 [payable] 属性。 像这样从 Near cli 调用这个合约 - near call sam2.testnet process_play_request --accountId sam2.testnet --deposit 0.005 工作正常 returns hello world.

let res = await contract.process_play_request(
    {},
    undefined, // attached GAS (optional)
    nearAPI.utils.format.parseNearAmount("0.005")
);

但是调用同一个合约,登录同一个账户,使用上面的JS代码会抛出以下错误Error: {} at Object.parseRpcError 同一合同上的其他方法工作正常,只有当我尝试使用它似乎分崩离析的存款功能时。附加正确的 GAS 数量仍然 returns 同样的错误。

任何人都可以看到我在 JS 代码中做错了什么。

看起来 near-api-js 无法解析来自 JSON RPC 的错误。你能去你的 node-modules/near-api-js 文件夹并在此处添加一个 console.log(errorObject) 吗:https://github.com/near/near-api-js/blob/ee975a1edd84dff955302453fbcca1413d362bb7/lib/utils/rpc_errors.js#L20 也许错误本身会帮助我们理解发生了什么。

解决方案

继上面 Serhii 的回答之后。抛出的实际错误是我的应用程序没有传输令牌的权限。 我不得不注销我的应用程序并重新登录到 sam2 帐户,它添加了完整的密钥权限,这意味着我的问题中发布的 JS 按预期工作。