新的 ethers.provider.web3provider 没有返回任何内容?

Ton*_*ony 1 blockchain ethereum ethers.js

我在 transactionContext.jsx 文件中是这样的,

import React, {useState, useEffect} from 'react';
import {BrowserProvider,ethers} from "ethers";
import { contractABI, contractAddr } from '../utils/constants';

const {ethereum} = window;

export const TransactionContext = React.createContext();

 const getEthereumContract = () => {
    console.log("get contract start");
    const provider = new ethers.providers.Web3Provider(ethereum);
    console.log(provider);
    const signer = provider.getSigner();
    const transactionsContract = new ethers.Contract(contractAddr, contractABI, 
signer);

console.log(provider,signer,transactionsContract);
};

// code ...
Run Code Online (Sandbox Code Playgroud)

我正在创建一个反应上下文,我将其传递给我的其他组件。但问题是,const provider = new ethers.providers.Web3Provider(ethereum);根本不起作用。就好像执行到这一行后就停止了。我知道这一点是因为“开始”日志正在打印,但仅此而已。没有错误,没有例外,它只是在那之后停止。我尝试在网上搜索,但没有找到与此相关的任何问题。那么这是怎么回事呢?我搞砸了什么?

请询问是否需要更多上下文或代码示例。

小智 9

是的,确实如此,ethers v6 现在有这个:

// v5
provider = new ethers.providers.Web3Provider(window.ethereum)

// v6:
provider = new ethers.BrowserProvider(window.ethereum)
Run Code Online (Sandbox Code Playgroud)

BrowserProvider 替换providers.Web3Provider

来源: https: //docs.ethers.org/v6/migrate/#migrate-contracts