web3 RPC соединение завершает программу без выхода - PullRequest
0 голосов
/ 31 октября 2018

У меня есть простая программа 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"

Когда я запускаю эту программу, на экран не выводится ни «пройдено», ни «не удалось». Программа просто заканчивается. Я не понимаю, что происходит, как программа может просто завершить работу без ошибки (ввод блока захвата и неудачная печать) или продолжить, и печать «пройдена».

1 Ответ

0 голосов
/ 02 ноября 2018

Документация для этого метода говорит, что вы должны предоставить метод обратного вызова или использовать свойство 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);
    }
}())

Возможно, вы получили ошибку времени выполнения, но не заметили ее.

...