Metamask
使用 Ethersjs 將 Metamask 連接到本地安全帽節點提供程序
我正在嘗試從本地執行的 Web 應用程序連接到我的本地安全帽節點(主網分支)。但是,因為我將 ethersjs 提供程序設置為
http://localhost:8545
,所以它知道在本地通話,我從 Metamask 收到錯誤消息:MetaMask - RPC Error: Expected an array with at least one valid string HTTPS url 'rpcUrls'
好奇解決方法是什麼?
我確信可能有一種方法可以通過 tls(?)在本地執行本地安全帽節點,但我覺得有更好的解決方案。
謝謝你的幫助。
請注意,我(當然)已經使用本地網路設置了 MM,並且我和我的提供商程式碼定義如下所示:
provider = new ethers.providers.Web3Provider(web3ProviderFrom(config.defaultProvider), config.chainId);
我並不完全關注這裡的問題,所以我將在答案中更加冗長,希望它有所幫助。我相信您的問題是您正在使用
ethers.providers.JsonRpcProvider(url)
何時設置提供程序,而您應該使用 Metamask 提供的提供程序。const provider = new ethers.providers.Web3Provider(window.ethereum, "any")
我假設您已經進入 Metamask 並向其中添加了 localhost 8545 網路。然後從項目 repo 中你可以執行
npx hardhat node
. 從那時起,您應該能夠使用類似npx hardhat run --network localhost scripts/deploy.js
.完成後,您將獲得新部署的合約地址並使用該地址從前端連接到您的合約。最後,確保將 Metamask 中的網路切換到 localhost 8545。
原來我的 Metamaks 網路設置不正確……我錯過了本地主網分支的正確鏈 ID 31337。
儘管多次審查了這個相關問題,但這個答案還是讓我知道了。