我从浏览器连接到本地节点,例如:
web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
如果在localhost上没有节点运行,我在浏览器控制台中看到一个错误:
Error: Invalid JSON RPC response: ""
是否有办法捕捉此错误并向用户提供有用的信息?我尝试过在new Web3()
和new HttpProvider()
调用中添加回调,但它们都没有启动。
发布于 2017-11-21 18:59:58
如果您使用的是任何web3版本0.20.x或更早版本,则可以使用
web3.isConnected()
如果连接,则返回“true”,如果没有连接,则返回“false”。
注意:如果您使用的是web3 v1.0.0-beta.x或更高版本,请查看发布的以下答案。
if(!web3.isConnected()) {
// show some dialog to ask the user to start a node
} else {
// start web3 filters, calls, etc
}
请参阅https://github.com/ethereum/wiki/wiki/JavaScript-API#web3isconnected
发布于 2018-01-18 08:52:29
如果使用web3js.1.0.0-beta.23或更高版本,这些版本没有方法isConnected()
。
相反,您可以使用web.eth.net.isListening()
web3 3文档方法,或者检查任何网络参数,例如get id网络。示例:
const web = new Web3();
web.setProvider(new Web3.providers.WebsocketProvider('ws://localhost:8545'));
web.eth.net.isListening()
.then(() => console.log('is connected'))
.catch(e => console.log('Wow. Something went wrong: '+ e));
https://ethereum.stackexchange.com/questions/31260
复制相似问题