es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Solicitar Metamask con “eth_requestAccounts” no funciona en next.js.

Este es un proyecto de Next.js. Detecté Metamask:

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

let provider;
if (typeof window !== "undefined") {
  // para simplificar, he configurado Next.js para usar el await de nivel superior
  provider = await detectEthereumProvider();
}
// El proveedor está detectado
console.log("proveedor", proveedor);

Esta es la función para enviar una solicitud a Metamask. No está arrojando errores:

const connect = async () => {
    try {
      await provider.request({ method: "eth_requestAccounts" });
    } catch (e) {
      console.log("error en la solicitud", e);
      // location.reload();
    }
  };

Agregué un controlador de clics:

<Button onClick={connect}>Conectar</Button>

No está sucediendo nada. Así que cambié el controlador de clics a:

<Button
  onClick={() => {
    // esto se está registrando.
    console.log("clic para enviar solicitud a Metamask");
    connect;
  }}
>
  Conectar
</Button>

Está registrando que hice clic en el botón, pero no está enviando la solicitud a Metamask.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Necesitas llamar a la función connect cuando se hace clic en el botón. Actualmente, solo estás registrando que se hizo clic en el botón.

    Cambia el manejador de clic a:

    <button onclick="{()" ==""> {
        // esto se está registrando.
        console.log("hizo clic para enviar solicitud a Metamask");
        connect(); // llama a la función connect
      }}
    >
      Conectar
    </button>
    

Comments are closed.