-
import './App.css';
import { useEffect, useState } from "react";
import { ethers } from "ethers";
import { TokenFarm } from './contracts';
function App() {
const [provider, setProvider] = useState();
const [signer, setSigner] = useState();
const [currentToken, setCurrentToken] = useState();
useEffect(() => {
enableWeb3().then(initializeData);
}, []);
async function enableWeb3() {
if (window.ethereum) {
const provider = new ethers.providers.Web3Provider(window.ethereum, "any");
await provider.send("eth_requestAccounts", []);
const signer = provider.getSigner();
setProvider(provider);
setSigner(signer);
}
else {
throw Error("No web3.0 provider!")
}
}
async function initializeData() {
const token = await new ethers.Contract(TokenFarm.address, TokenFarm.abi, signer).deployed();
setCurrentToken(token);
}
return (
<div className="App">
</div>
);
}
export default App; I get this error that happens in function initializeData when creating new instance of contract:
I'm using Ethers 5.4.0 with React. I'm not sure if I'm doing something wrong or there is a bug. |
Beta Was this translation helpful? Give feedback.
Answered by
zemse
Jul 2, 2021
Replies: 1 comment 2 replies
-
edit: when you're
|
Beta Was this translation helpful? Give feedback.
2 replies
Answer selected by
Venoox
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Can you try changingconst signer = provider.getSigner();
toconst signer = await provider.getSigner();
if that fixes?edit: when you're
setProvider(provider); setSigner(signer);
, maybe it's not setting the value forsigner
beforeinitializeData
is called. Can you try adding await before them?