元掩码 |请求中不存在属性 MetaMaskEthereumProvider

问题描述 投票:0回答:1

在我使用连接到 metamask 之前

declare global {
  interface Window {
    ethereum: import("ethers").providers.ExternalProvider;
  }
}

它在 window.ethereum 上运行良好,但它不适用于移动设备,所以我按照说明切换到这个:

import detectEthereumProvider from "@metamask/detect-provider";

export const requestMetamaskAccount = async (): Promise<string | undefined> => {
  const provider = await detectEthereumProvider();

  if (provider) {
    const accounts = await provider
      ?.request?.({
        method: "wallet_requestPermissions",
        params: [
          {
            eth_accounts: {},
          },
        ],
      })
      .then(() =>
        provider?.request?.({
          method: "eth_requestAccounts",
       })
      );

    return accounts?.[0];
  }
  return undefined;
};

现在,它给了我这个错误:属性“请求”在类型“MetaMaskEthereumProvider”上不存在。我认为使用 detectEthereumProvider,provider 应该等于 window.ethereum,其中应该存在请求。

reactjs typescript metamask
1个回答
0
投票

在移动设备上没有

window.ethereum
,它在桌面上工作的原因是因为您已经安装了元掩码扩展,如果没有,也会发生同样的情况。
window.ethereum
由 metamask 注入,要获得等效的效果,您需要在 metamask Dapp 浏览器中运行该应用程序,
"detectEthereumProvider from "@metamask/detect-provider"
检查您是从桌面访问还是从 metamask Dapp 浏览器访问.

© www.soinside.com 2019 - 2024. All rights reserved.