首页 > 解决方案 > web3 RPC 连接在没有输出的情况下终止程序

问题描述

我有一个简单的 NodeJS 程序来演示我的问题

var Web3 = require('web3');
var HDWalletProvider = require("truffle-hdwallet-provider");
var provider = new HDWalletProvider("MY MNEMONIC", "HTTP://BAD_CONNECTION.127.0.0.1:7545");
var web3 = new Web3(provider);

(async function getCoinBase() {
    try {
        var coinbase = await web3.eth.getCoinbase();
        console.log('passed');
    } catch (err) {
        console.log('failed');
        console.log(err);
    }
}())

我正在使用:“truffle-hdwallet-provider”:“0.0.6”,“web3”:“^1.0.0-beta.36”

当我运行这个程序时,“通过”和“失败”都不会打印到屏幕上。程序刚刚结束。我不明白发生了什么,程序如何才能在没有错误的情况下结束(进入 catch 块并打印失败)或继续并打印“通过”。

标签: javascriptasync-awaitweb3

解决方案


此方法的文档说,您必须提供回调方法或使用web3.eth.coinbase属性来同步执行此操作。您的示例可能如下所示:

(async function getCoinBase() {
    try {
        web3.eth.getCoinbase(function (err, result) {
            if (err) {
                console.log("web3.eth.getCoinbase error = " + err);
            } else {
                console.log("web3.eth.getCoinbase " + result);
            }
        });
        console.log('passed');
    } catch (err) {
        console.log('failed');
        console.log(err);
    }
}())

可能,您收到了运行时错误,但您没有注意到它。


推荐阅读