enc*_*oul 6 web3js ethers.js web3-react web3modal
我正在尝试将 web3 钱包连接按钮添加到我的网页上,但我收到此错误,并且很长一段时间以来我无法解决它。这是一个 nextjs 反应应用程序。
const InvitesPage: NextPage = () => {
let web3Modal: any;
useEffect(() => {
web3Modal = new Web3Modal({
network: 'rinkeby',
theme: 'light', // optional, 'dark' / 'light',
cacheProvider: false, // optional
providerOptions: providerOptions, // required
});
});
const classes = useStyles();
const { themeStretch } = useSettings();
const [connectedAccount, setConnectedAccount] = useState('');
const connectWeb3Wallet = async () => {
try {
const instance = await web3Modal.connect();
const provider = new ethers.providers.Web3Provider(instance);
const web3Accounts = await provider.listAccounts();
const network = await provider.getNetwork();
setConnectedAccount(web3Accounts[0]);
} catch (error) {
console.log(error);
}
};
const disconnectWeb3Modal = async () => {
await web3Modal.clearCachedProvider();
setConnectedAccount('');
};
return (
{!connectedAccount ? (
<ConnectIdentity
connectionType="Connect Wallet"
connected={false}
icon="eva:wallet-fill"
onClick={connectWeb3Wallet}
/>
) : (
<ConnectIdentity
connectionType="Disconnect Wallet"
connected={false}
icon="eva:wallet-fill"
onClick={disconnectWeb3Modal}
/>
)}
);
};
Run Code Online (Sandbox Code Playgroud)
在函数内部connectWeb3Wallet我收到以下错误 -
Property 'providers' does not exist on type 'typeof import("/Users/encrypted_soul/code/..../node_modules/ethers/types/ethers")'.ts(2339)
Run Code Online (Sandbox Code Playgroud)
上面的功能与 npm 上的包的自述文件几乎相同 - https://www.npmjs.com/package/web3modal?activeTab=readme
我无法理解为什么会收到此错误,因为提供程序是在以太上定义的 - https://docs.ethers.org/v4/cookbook-providers.html
Fem*_*ack 13
只是为了那些不愿意降级到以前版本的人在此处添加此内容。
在新的以太版本(v6)中,进行了一些重大更改。
因此,要正确访问提供程序,语法应如下所示:
// v5
提供商 = new ethers.providers.Web3Provider(window.ethereum)// v6:
provider = new ethers.BrowserProvider(window.ethereum)
此外,向网络广播交易的方法也发生了变化:广播交易
// v5
提供商.sendTransaction(signedTx)// v6
提供商.broadcastTransaction(signedTx)
来自 v6迁移指南
小智 4
他们在新版本中删除了providers关键字:
https://docs.ethers.org/v6/migration/#migrate-providers
像这样尝试一下:
const provider = new ethers.Web3Provider("...");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3980 次 |
| 最近记录: |