该方法eth_signTypedData_v4不exist/is不可用

The method eth_signTypedData_v4 does not exist/is not available

调用已部署在 rinkeby-infura 中的 solidity 合约时显示错误。我在我的 React 应用程序中使用 ethers.js。我见过类似的问题,例如 this but I am not simply trying to send a transaction but rather trying to sign a type data as explained here。我叫它几乎一样:

const signature = await mySigner._signTypedData(domain, types, voucher)

我错过了什么?

我所做的与我提供的 example question 的问题几乎相同。我试图签署一个类型化的数据。这曾经在我的 Hardhat 项目中起作用,据我了解,Hardhat 正在中断通话并使用我在 hardhat.config.js 文件中提供的私钥。我该如何解决这个问题?

我开始使用 injectedProvider,而不是使用常规的 JSONRpcProvider。我在这里找到了一个例子:https://docs.scaffoldeth.io/scaffold-eth/examples-branches/common-web3-patterns/signator.io

injectedProvider 也存在于我正在使用的示例项目中(here). But for some reason it was exist inside the App.jsx but never send (or used) to the Minter.jsx。我已将 injectedProvider 添加到 mintNFT class 并从那里获取签名者const mySigner = injectedProvider.getSigner()。之后,我能够使用 await mySigner._signTypedData(domain, types, voucher) 成功地对键入的数据进行签名。这在我的 MetaMask 钱包中打开了一个不错的 pop-up,然后我对消息进行了签名。