我正在开发一个要测试的应用程序的前端。但是,MetaMask 一直给我这个错误?我尝试像之前建议的那样更改气体限制,但什么也没做。有什么想法吗?
错误: MetaMask - RPC 错误:内部 JSON-RPC 错误。
代码:-32603 数据:{代码:-32000,消息:“所需的天然气超过限额(30000000)或总是失败交易”} 消息:“内部 JSON-RPC 错误。”
没有看到代码,很难确定,但你可以尝试:
const contractInstance = new state.web3.eth.Contract(
MyContract.abi,
"0x.....", // contract address
{
from: state.accounts[0],
gasPrice: 1000,
gas: 100000
}
);
确保汽油价格与这些价格相似,您可能需要根据您的情况进行调整。
重新编译并重新部署 --> 对于 truffle,先运行
truffle develop
,然后运行 compile
,然后运行 migrate --reset
进行本地部署。
在 Metamask 中,重置您的测试帐户。 Metamask > 选择帐户 > 设置 > 高级 > 重置帐户。 仅对测试帐户执行此操作
以前,由于气体规格问题已修复,旧版本中曾发生过这种情况。 rpcErrors.internal` 期望一个字符串作为第一个参数,任意数据作为可选的第二个参数。传递一个非 字符串第一个参数导致错误被错误掩盖 来自 eth-json-rpc-errors。
请检查您传递给 Metamask 的内容。
就我而言,在尝试了这么多选项后,我重新启动了 Ganache 并将新帐户从 Ganache 重新导入到 Metamask。 我将这个新帐户与本地主机应用程序连接起来。
这解决了我的问题。
在执行任何交易之前,发送 ETH 地址必须连接到您自己的站点或 UI。这样它就可以获取发送帐户的地址并进行元掩码中的进一步交易。
确保您的发送帐户地址必须连接到您的 UI。