MetaMask cambió recientemente la forma en que inyectan su API y ya no exponen el objeto window.web3 .
MetaMask ya no inyecta web3. Para obtener más información, consulte: https://docs.metamask.io/guide/provider-migration.html#replacing-window-web3
Uncaught TypeError: web3.eth is undefined
¿Cómo obtener una lista de cuentas de la nueva API de MetaMask ethereum ?
Puede usar el objeto window.ethereum inyectado por MetaMask u otras billeteras.
if (typeof window.ethereum !== 'undefined') { // connects to MetaMask const accounts = await ethereum.request({ method: 'eth_requestAccounts' }); } else { // tell the user to install an `ethereum` provider extension }Esto utiliza la nueva API llamando a una solicitud de Ethereum asíncrona en el proveedor. Acepta la mayoría de las API de Ethereum y su implementación es bastante genérica.