MetaMask - RPC 错误:错误:[ethjs-query] 同时格式化来自 RPC 的输出

问题描述

我对以太坊智能合约可靠性编程非常陌生。目前,当我尝试将变量从我的 Node.js servlet 传递到我使用 Truffle Suite 部署的智能合约时,我一直面临这个问题,特别是使用 Ganache 提供的帐户。

以下是我用来连接和调用智能合约方法的JavaScript:

10

以下是智能合约中的 solidity 代码

if (this.state.contract) {
            this.state.contract.methods.searchKeyword(searchToken.toString())
                .send({from: this.state.account,gas: 210000,gasPrice: 50000},function (err,res) {
                    if (err) {
                        console.log("Error",err)
                        return
                    }
                    console.log(res)
                })
        }

每当我调用函数并传递 function searchKeyword (string memory searchToken) public { searchWord = searchToken; } 时,都会弹出以下错误。我曾尝试将 gas 和 gasPrice 设置在我的 MetaMask 钱包的 gasLimit 以上、之内、以下,但我仍然收到诸如 searchToken 之类的错误。我试过没有设置 gas 和 gasPrice,但我仍然遇到类似的问题。

enter image description here

任何天才都请帮助我这个菜鸟初学者,他努力调试一个小功能。提前谢谢你们:D

解决方法

我认为这里的问题是,当您“truffle deploy --reset”时,Ganache 区块链希望每个用户的“program_counter”再次从 0 开始。因此,您还必须在您的 Metamask 帐户上重新启动 program_counter。 Metamask Settings -> Advanced -> Reset Account 为您的 Metamask 帐户重新启动 program_counter。这对我有用!