No tengo ningún problema en recuperar eventos con este código:
contract.MyEvent({}, { fromBlock: 0 }).get((err, data) => console.log(data))
Pero cuando uso exactamente el mismo código en un navegador que usa MetaMask, la devolución de llamada nunca se ejecuta.
¿MetaMask está haciendo algo que impide que el evento regrese? Puedo llamar a funciones muy bien, pero no puedo recuperar eventos.
Debería poder obtener eventos desde su navegador de la misma manera, ya sea usando metamask o usando web3 cargado con Javascript normal.
Asegúrese de que está probando con el mismo nodo: Obtener registros en un amplio rango puede ser bastante agotador para el nodo del que está extrayendo, por lo que no todos los nodos públicos los devolverán antes de que se agote el tiempo de espera, o en absoluto. Si este resulta ser el problema, intente reducir el rango de los registros que está tratando de recuperar.
También asegúrese de que web3 esté cargado antes de comenzar a usarlo. Por lo general, desea verificar que esté disponible después del evento de carga de la página y solo comenzar a usarlo en ese momento.
Finalmente, Metamask parece tener problemas para cambiar de red de forma limpia. Después de cambiar a la red que desea usar, intente cerrar todas las ventanas abiertas de Chrome (no solo la ventana en la que está usando Metamask) y luego abra el navegador nuevamente desde cero.
unchilldude
DanF
unchilldude