TypeError: Eigenschaft 'then' von undefined kann nicht gelesen werden

Ich habe einen Fehler mit Web3. Nachdem ich alle Möglichkeiten durchgegangen war, entschied ich mich, eine Frage zu stellen, in der Hoffnung, dass jemand eine Lösung hat.

Der Fehler, den ich immer wieder bekomme, ist:

TypeError: Eigenschaft 'then' von undefined kann nicht gelesen werden

web3.eth.getAccounts().then(accounts => {
   web3.eth.getBalance(accounts[0]).then(balance => {
      console.log(balance);
    }
}



Hinweis: Dieser exakt gleiche Code läuft auf zwei anderen Servern einwandfrei. Ich habe genau die gleichen Versionen von Truffle, React..etc wie die anderen beiden.

Alle Lösungen werden geschätzt! Danke im Voraus.

Was ist die Web3-Version, die Sie verwenden?
Dinge im Zusammenhang mit .thenhaben sich mit der Version geändert, Sie sollten Ihre betreffende Web3-Version angeben.
Sie benötigen mindestens web3 v1.0, da es Versprechen unterstützt, für Version v0.20 werden nur Rückrufe unterstützt. Sie müssen eine Bibliothek eines Drittanbieters wie bluebird verwenden, um Funktionen zu versprechen.
hast du dieses Problem gelöst?

Antworten (2)

Haben Sie versucht, einen Fang hinzuzufügen, um den Stacktrace Ihres Fehlers auszugeben?

Fügen Sie einfach am Ende Ihrer Versprechenskette hinzu:then(account => {...}).catch( err => { console.log(err); }

Sie können dann in der Konsole den Stacktrace des Fehlers sehen und unterscheiden, ob es sich um Konten oder Konten[0] handelt, die nicht definiert sind.

Wenn dies der Fall ist accounts[0], stellen Sie sicher, dass Ihre web3-Instanz verbunden ist. Wenn es sich um das gesamte accountsObjekt handelt, stellen Sie sicher, dass Sie Web3.js verwenden v1.x.xund nichtv.0.2.x

Leider wurde mein Fehler irgendwie ausgelöst, bevor dieser Fang wirksam wurde, möglicherweise weil ich jQuery verwendet habe.jQuery.Deferred exception: Cannot read property 'then' of undefined TypeError: Cannot read property 'then' of undefined

Versuchen Sie, es in eine asynchrone Funktion zu packen:

private async deployContract(): Promise<string> {
  web3.eth.getAccounts().then...
  ...
  return Promise.resolve('Check done');
}