Metamask

使用 Ethersjs 將 Metamask 連接到本地安全帽節點提供程序

  • April 8, 2022

我正在嘗試從本地執行的 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。

儘管多次審查了這個相關問題,但這個答案還是讓我知道了。

引用自:https://ethereum.stackexchange.com/questions/122790