web3.eth.getAccounts не работает с infura

PS: я использую web3 beta-37 (поскольку у каждой версии есть свои проблемы) Все, что находится под строкой web3.eth.getAccounts в функции развертывания, не работает. Когда я запускаю код, он ничего не показывает! Вот код:

const HDWalletProvider = require('truffle-hdwallet-provider');
const Web3 = require('web3');
const {interface , bytecode} = require('./compile');

const provider = new HDWalletProvider(mnemonic,
'https://rinkeby.infura.io/v3/my_project_id');

const web3 = new Web3(provider);

const deploy = async() => {
    const accounts = await web3.eth.getAccounts();
    console.log('Attempting to deploy from account', accounts[0]);
    const result = await new web3.eth.Contract(JSON.parse(interface))
                             .deploy({data: bytecode, arguments: ['Hi There!']})
                             .send({'from': accounts[0], 'gas': '1000000'});

    console.log('Contract deployed to: ', result.options.address);
};
deploy();

Кроме того, тестирование этого в mocha показывает ошибку, пока оно работает при использовании ganache-cli.

const assert = require('assert');
const HDWalletProvider = require('truffle-hdwallet-provider');
const Web3 = require('web3');
const {bytecode , interface} = require('../compile');

const provider = new HDWalletProvider(mnemonic,
'https://rinkeby.infura.io/v3/project_id');



let accounts;

beforeEach(async () => {
  //Get a list of all accounts
  accounts = await web3.eth.getAccounts();

});

describe('Inbox', () => {
  it('address', () => {
    assert.ok(accounts);
  })

Вот результаты для разных версий: beta-46: Невозможно прочитать карту свойств () undefined. В одном ответе на stackexchange говорится, что для устранения этой проблемы используйте beta-36.

бета-36 и бета-37: ничего после выполнения оператора getAccounts (), пустой экран.

beta-26: core.addProviders не является функцией


person akshay sharma    schedule 26.02.2019    source источник
comment
Код мне кажется нормальным. Я не должен это говорить, но на самом деле у вас нет my_project_id в ссылке на Infura, верно? Кроме того, кажется странным, что он не работает? Какую версию web3 вы используете? Можете ли вы проверить правильность настройки поставщика (возможно, путем отладки)?   -  person nikos fotiadis    schedule 26.02.2019
comment
@nikosfotiadis в console.log (провайдер) показывает мне большой объект с 10 адресным массивом (с одним адресом). Итак, я предполагаю, что поставщик установлен правильно, и я не использую my_project_id. Также версия web3 - это beta-37.   -  person akshay sharma    schedule 26.02.2019
comment
вы можете поделиться своим compile.js файлом? и Attempting to deploy from account эта строка записывается в консоль?   -  person Iftifar Taz    schedule 26.02.2019
comment
@IftifarTaz, все в порядке, я уверен ... Я провел тест в мокко ... Эта штука отлично работала с ганашем ... И нет ... ничего после того, как const accounts = await web3.eth.getAccounts(); войдет в консоль   -  person akshay sharma    schedule 27.02.2019


Ответы (1)


У меня тоже была такая же проблема.

Попробуйте удалить часть "/ v3" из URL-адреса infura:

const provider = new HDWalletProvider(mnemonic,
'https://rinkeby.infura.io/my_project_id');

Надеюсь это поможет.

person JoKeRxbLaCk    schedule 28.02.2019
comment
Работает :) Спасибо, чувак! Я не могу сказать тебе, сколько вещей я пытался заставить эту штуку работать. Я даже опубликовал проблему на web3 Github, я застрял на 3 дня XD - person akshay sharma; 01.03.2019
comment
Рад, что помог вам! - person JoKeRxbLaCk; 01.03.2019