You need to enable JavaScript to run this app. Ethers使用InfuraProvider调用getSigner报不支持签名错误如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Ethers使用InfuraProvider调用getSigner报不支持签名错误如何解决

报错原因

InfuraProvider属于纯RPC节点提供商,仅提供以太坊网络的数据查询、已签名交易的广播能力,本身不存储任何用户私钥。而getSigner方法要求Provider持有对应账户的私钥才能生成可签名的Signer对象,因此该操作本身就不被纯RPC Provider支持。

修复方案

你需要自行导入钱包的私钥/助记词生成Signer,再将InfuraProvider关联到该Signer上即可,具体修改如下:

  1. 先在你的.env文件中新增私钥配置(绝对不要硬编码私钥到代码中):
PRIVATE_KEY=你的以太坊钱包私钥
  1. 修改报错行的代码,将原来的provider.getSigner()替换为用私钥生成绑定Provider的Signer:
// 用私钥生成签名器并关联InfuraProvider
const signer = new ethers.Wallet(process.env.PRIVATE_KEY, provider);

如果使用助记词导入钱包,可替换为如下写法:

// 助记词同样存储在.env中,不要硬编码
const signer = ethers.Wallet.fromMnemonic(process.env.MNEMONIC).connect(provider);
额外注意事项
  • 请确保.env文件已加入.gitignore,避免私钥/助记词泄露导致资产损失
  • 你当前使用的Rinkeby测试网已停止服务,建议替换为Sepolia或Goerli测试网
  • 请确认对应钱包地址在测试网持有足够的原生代币支付交易Gas费

内容的提问来源于stack exchange,提问作者Vlad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 06:21:02