Go-Ethereum

無法在 geth 上使用 web3.js

  • April 20, 2018

這是我的程式碼:

  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

預設的 websocket 埠是 8546

你可以試試

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

或連接到 HTTP JSON RPC

var web3 = new Web3("http://localhost:8545");

我認為這是 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="*" 

引用自:https://ethereum.stackexchange.com/questions/46274