今天遇到一个很搞心态的问题,是在按照网上的etherjs教程,在hardhat环境下,利用ether.js的jsonrpcprovider建立节点与以太坊之间的网络连接时遇到的,以下是代码:

const  ethers  = require("ethers");
//const JsonRpcProvider = ethers.providers;
async function main()
{
const INFURA_ID='机密内容';
const providerGoerli = new ethers.providers.JsonRpcProvider(`https://goerli.infura.io/v3/${INFURA_ID}`)
const providerETH = new ethers.providers.JsonRpcProvider(`https://mainnet.infura.io/v3/${INFURA_ID}`)
console.log("\n2. 查询provider连接到了哪条链")
const network = await providerETH.getNetwork();
console.log(network);
}
main()

代码逻辑十分简单且基础,利用etherjs创建节点与以太坊主网以及goerli测试网之间的网络连接,然后查询一下连接到的是哪个网络
以下是报错信息:
'''
TypeError: Cannot destructure property 'JsonRpcProvider' of 'ethers.providers' as it is undefined
'''
一开始一直找不到原因,后来才发现是ether版本问题。开始安装的是ether六点几的新版本,网上大佬解答说不稳定。
solution:
1.找到package.json,将ether版本改为老一些的稳定版本(当时改成了5.4)
2.删除掉node_modules文件
3.命令行输入npm install,再次下载ethers