Ereignisprotokolle können mit MetaMask Web3 nicht abgerufen werden

Ich habe kein Problem beim Abrufen von Ereignissen mit diesem Code:

contract.MyEvent({}, { fromBlock: 0 }).get((err, data) => console.log(data))

Aber wenn ich genau denselben Code in einem Browser verwende, der MetaMask verwendet, wird der Rückruf nie ausgeführt.

Unternimmt MetaMask etwas, das verhindert, dass das Ereignis zurückkommt? Ich kann Funktionen problemlos aufrufen, aber ich kann keine Ereignisse abrufen.

Antworten (1)

Sie sollten in der Lage sein, Ereignisse in Ihrem Browser auf die gleiche Weise abzurufen, unabhängig davon, ob Sie Metamask verwenden oder web3 verwenden, das mit normalem Javascript geladen wird.

Stellen Sie sicher, dass Sie mit demselben Knoten testen: Das Abrufen von Protokollen über einen weiten Bereich kann für den Knoten, von dem Sie ziehen, ziemlich anstrengend sein, sodass nicht alle öffentlichen Knoten sie vor dem Timeout oder überhaupt zurückgeben. Wenn sich herausstellt, dass dies das Problem ist, versuchen Sie, den Bereich der Protokolle zu verringern, die Sie abrufen möchten.

Stellen Sie außerdem sicher, dass web3 geladen ist, bevor Sie es verwenden. Normalerweise möchten Sie nach dem Seitenladeereignis überprüfen, ob es verfügbar ist, und es erst dann verwenden.

Schließlich scheint Metamask Probleme zu haben, Netzwerke sauber zu wechseln. Nachdem Sie zu dem Netzwerk gewechselt haben, das Sie verwenden möchten, schließen Sie alle geöffneten Chrome-Fenster (nicht nur das Fenster, in dem Sie Metamask verwenden) und öffnen Sie den Browser dann erneut von Grund auf neu.

Das Beenden meines Browsers hat funktioniert! Brillant! Es ist sinnvoll, dass dies das Problem war, da es auf meinem lokalen Knoten buchstäblich keinen Hinweis darauf gab, dass etwas passiert war, und Metamask nichts zurückgab (offensichtlich befindet sich mein lokaler Vertrag nicht in dem Netzwerk, mit dem er verbunden war). Ich danke Ihnen sehr.
Es gibt einen aktuellen Fehler in der Produktion in MetaMask im Zusammenhang mit Ereignisabfragen, sie schlagen zeitweise fehl, wir arbeiten derzeit daran.
@DanF FWIW Neustart meines Browsers hat das Problem behoben. LMK, wenn ich Ihnen auf andere Weise helfen kann