Невозможно работать с web3.js на geth

Это мой код:

   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);
}

когда я запускаю функцию send(), я получаю эту ошибку: " TypeError: this.provider.sendAsync is not a function"

Ответы (2)

Порт веб-сокета по умолчанию — 8546.

Вы могли бы попробовать

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

Или подключение к HTTP JSON RPC

var web3 = new Web3("http://localhost:8545");
изменено, как сказано, по-прежнему возникает ошибка того же типа «TypeError: this.provider.sendAsync не является функцией»

Я думаю, что здесь есть похожая проблема на github https://github.com/ethereum/web3.js/issues/1119

идея в том, чтобы использовать

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

перед созданием нового экземпляра. Кроме того, как заметил @cleanunicorn, вы должны установить порт ws по умолчанию 8546, если вы не определили его по-другому при запуске geth.

Эта ошибка может быть вызвана проблемой подключения, поэтому запустите geth со следующими параметрами.

--ws --wsport 8546 --wsaddr "0.0.0.0" --wsorigins="*" 
обновил код (вопрос), как сказано, и все та же проблема
ты порт тоже поменял?
да, я тоже так делал.
проверить мое обновление
Сейчас я использую JSON RPC. я должен изменить порт на 8545?
сделал именно так, как вы сказали .. все еще не повезло!
для RPC проверьте github.com/ethereum/wiki/wiki/JavaScript-API
все в порядке .. Я запустил geth, как сказал. все та же ошибка. что я могу пропустить!