简体   繁体   English

web3.eth.getAccounts 不适用于 infura

[英]web3.eth.getAccounts not working with infura

PS: am using web3 beta-37 (Since every version has its own issues) Anything under the line web3.eth.getAccounts in the deploy function isn't working. PS:我正在使用 web3 beta-37(因为每个版本都有自己的问题)部署函数中 web3.eth.getAccounts 行下的任何内容都不起作用。 When i run the code it just shows nothing!当我运行代码时,它什么也没显示! Here is the code:这是代码:

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();

Also, testing this in mocha shows error while it works when using ganache-cli此外,在使用 ganache-cli 时,在 mocha 中测试它会显示错误

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);
  })

Here are the results with different versions: beta-46: Cannot read property map() of undefined One answer on stackexchange says use beta-36 to fix this issue以下是不同版本的结果: beta-46:无法读取未定义的属性 map() stackexchange 上的一个答案说使用 beta-36 来解决这个问题

beta-36 and beta-37: Nothing after the getAccounts() statement gets executed, blank screen. beta-36 和 beta-37:在 getAccounts() 语句执行后没有任何内容,空白屏幕。

beta-26: core.addProviders is not a function beta-26:core.addProviders 不是函数

I also had the same issue.我也有同样的问题。

Try to remove the "/v3" part from the infura url:尝试从 infura 网址中删除“/v3”部分:

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

Hope this helps.希望这可以帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM