Web3js

從 NodeJS 後端連接到託管的 web3 提供程序

  • March 5, 2019

我正在使用etherchain中的這些說明。這是一個類似的問題(似乎重複,但不是)。那裡提供的解決方案對我不起作用,因為我沒有本地乙太坊客戶端可以連接。我想使用Etherchain提供的一個。

const Web3 = require('web3');
const web3 = new Web3(new Web3.providers.HttpProvider("http://rpc.ethapi.org:8545"));
web3.eth.getBlock("latest", (error, result) => {
 console.log('error:', error);
 console.log('results', result);
});

錯誤:

Error: Invalid JSON RPC response: ""
  at Object.InvalidResponse (/home/manid/Рабочий стол/Pogovorim/NODE_SERVER/node_modules/web3/lib/web3/errors.js:35:16)
   at XMLHttpRequest.request.onreadystatechange (/home/manid/Рабочий стол/Pogovorim/NODE_SERVER/node_modules/web3/lib/web3/httpprovider.js:116:32)
   at XMLHttpRequestEventTarget.dispatchEvent (/home/manid/Рабочий стол/Pogovorim/NODE_SERVER/node_modules/xhr2/lib/xhr2.js:64:18)
   at XMLHttpRequest._setReadyState (/home/manid/Рабочий стол/Pogovorim/NODE_SERVER/node_modules/xhr2/lib/xhr2.js:354:12)
   at XMLHttpRequest._onHttpRequestError (/home/manid/Рабочий стол/Pogovorim/NODE_SERVER/node_modules/xhr2/lib/xhr2.js:544:12)
   at ClientRequest.<anonymous> (/home/manid/Рабочий стол/Pogovorim/NODE_SERVER/node_modules/xhr2/lib/xhr2.js:414:24)
   at emitOne (events.js:96:13)
   at ClientRequest.emit (events.js:188:7)
   at Socket.socketErrorListener (_http_client.js:309:9)
   at emitOne (events.js:96:13)
   at Socket.emit (events.js:188:7)
   at emitErrorNT (net.js:1281:8)
   at _combinedTickCallback (internal/process/next_tick.js:74:11)
   at process._tickCallback (internal/process/next_tick.js:98:9)

我錯過了什麼?

我已經換了

const web3 = new Web3(new Web3.providers.HttpProvider("http://rpc.ethapi.org:8545"));

和:

const web3 = new Web3(new Web3.providers.HttpProvider("https://ropsten.infura.io/TOKEN"));

一切正常。

這是在infura.iohttps://ropsten.infura.io/TOKEN上註冊後給我的

您應該小心使用 Infura,因為它可能會向您傳遞不正確的資訊。Infura 採用負載均衡器後面的多個節點進行架構。所有這些節點都不同步,因此您可以從包含陳舊塊的節點或未與最新塊同步的節點接收資訊。

我們曾經使用過 Infura,它非常棒,因為它是免費的,但是,它導致我們需要花費大量時間進行工程設計,因為我們不得不使用不一致的數據來調試響應。我們切換到煉金術,我們希望我們能早點切換到它。這是一項有償服務,但每一分錢都值得。

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