Web3js
從 NodeJS 後端連接到託管的 web3 提供程序
我正在使用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.io
https://ropsten.infura.io/TOKEN
上註冊後給我的
您應該小心使用 Infura,因為它可能會向您傳遞不正確的資訊。Infura 採用負載均衡器後面的多個節點進行架構。所有這些節點都不同步,因此您可以從包含陳舊塊的節點或未與最新塊同步的節點接收資訊。
我們曾經使用過 Infura,它非常棒,因為它是免費的,但是,它導致我們需要花費大量時間進行工程設計,因為我們不得不使用不一致的數據來調試響應。我們切換到煉金術,我們希望我們能早點切換到它。這是一項有償服務,但每一分錢都值得。