Kann nicht mit web3.js auf Geth arbeiten

Das ist mein Code:

   function send() {
    Web3.providers.HttpProvider.prototype.sendAsync = Web3.providers.HttpProvider.prototype.send;
    var web3 = new Web3("http://localhost:8545");
    var data = web3.eth.getHashrate();
    alert(data);
}

Wenn ich die Funktion send() ausführe, erhalte ich diesen Fehler: " TypeError: this.provider.sendAsync is not a function"

Antworten (2)

Der Standard-Websocket-Port ist 8546

Du könntest es versuchen

var web3 = new Web3("ws://localhost:8546");

Oder eine Verbindung zum HTTP JSON RPC herstellen

var web3 = new Web3("http://localhost:8545");
wie gesagt geändert und immer noch den gleichen Typfehler "TypeError: this.provider.sendAsync is not a function"

Ich denke, hier ist ein ähnliches Problem auf Github https://github.com/ethereum/web3.js/issues/1119

Die Idee ist zu verwenden

Web3.providers.HttpProvider.prototype.sendAsync = Web3.providers.HttpProvider.prototype.send

bevor Sie eine neue Instanz erstellen. Außerdem sollten Sie, wie von @cleanunicorn entdeckt, den Standard-WS-Port 8546 festlegen, es sei denn, Sie haben ihn beim Ausführen von Geth anders definiert.

Dieser Fehler kann durch ein Verbindungsproblem verursacht werden, also führen Sie geth mit den folgenden Optionen aus

--ws --wsport 8546 --wsaddr "0.0.0.0" --wsorigins="*" 
aktualisierte den Code (Frage) wie gesagt und immer noch das gleiche Problem
hast du auch den port geändert?
ja das habe ich auch gemacht.
überprüfen Sie mein Update
Ich verwende jetzt JSON RPC. Soll ich den Port auf 8545 ändern?
habe genau das gemacht, was du gesagt hast.. immer noch kein Glück!
das ist ok.. ich habe geth wie gesagt laufen lassen. immer noch der gleiche Fehler. was kann ich vermissen!