Web3js no se conecta a TestRPC en localhost

Simplemente intento ejecutar web3js en una consola de nodo y conectarlo a un testrpc que se ejecuta en localhost.

Ejecuto mi testrpc así:

> ganache-cli
Ganache CLI v6.0.3 (ganache-core: 2.0.2)

Available Accounts
==================
(0) 0x131f68e69281532b0ced46cb5da5a5b8cd676b81
(1) 0xb7f672193eb7653912fdbe623699aa21c5d6a9c7
(2) 0x4b6021ac75768c1872ec10d4da31046f37e64d31
(3) 0x0d1f5030fbca0b6ed939093882e3fd788ddb91c6
(4) 0xb4d33e34e1743b07b2599bc532bcf9583f7019b2                                                                                                                                                                      [16/3254](5) 0x160343f0e731075149608a48aed614328127336f
(6) 0xf0c9c25fa5d496263176c07ea0d73172f8566d4f
(7) 0xffcc8d7d07334fc0af7d027378a20289b708e5be
(8) 0x453fca917e47ed8786a05613c3f3de89d57b3c8f
(9) 0x377a23e76fa9bc0574c30a64df4ca9b186c3976b

Private Keys
==================
(0) 8e79cd0667cf265d7241087af29788a7bbe6e2608b436cfe9f775153b5516f31
(1) c90108c817b0648f7fb7795f5b21c45bd3ba016aefa8dafc0d74d39ff68960ef
(2) bf7b186071640f8e986f2e78edf41643e3e1f8aedbfc51fb9410ad9f2a5d502b                                                                                                                                                 [5/3254](3) f40c6a05337b137cc084991a2743d67bf24d27206ffaba8432864e10edb66860
(4) de0008cef56816baea1f0363e6c9af3a1e69821380d72879fc0e2270cceb2044
(5) 0b73cbb9226ec939084831cb749f198dce80b39057b66c121cbdfc6627994f69
(6) a37f478448aabb7ff895d53165bb74b27c9913a2d7130b9e0cd587915615f08d
(7) 40790b3db911d0e4812a164f1778e2d74c3f79589c4e84ee4a1a6b87e25ad69a
(8) 42536e4ddc80bfb0104a265f94c50e65d2484007a9d56200a409de27d86358f0
(9) 572432cf3dc96494900175b66428a40f107de0a9ff832cce9e8aad2385ae22be

HD Wallet
==================
Mnemonic:      between trust fossil over stand make suffer behind raccoon long engage height
Base HD Path:  m/44'/60'/0'/0/{account_index}

Listening on localhost:8545

Todo esto me parece bien, luego abro una sesión tmux y ejecuto las siguientes líneas en un nodo simple cli:

// Load Libraries
  var solc = require("solc");
  var fs = require("fs");
  var Web3 = require("web3");

// Connect Web3 Instance
  var web3 = new Web3(new Web3.providers.HttpProvider(`http://localhost:8545`));

// Global Account Accessors
  var acct1 = web3.eth.accounts[0];

> acct1
undefined

Como puede ver, el valor acct1 está vacío, cuando vuelvo a mi sesión tmux ejecutando testrpc, no puedo ver el comando eth_account que debería haberse ejecutado.

Si ejecuto, netstat -tuplenpuedo ver que testrpc se está ejecutando en el puerto 8545:

tcp6       0      0 :::8545                 :::*                    LISTEN      1000       3431613     50196/node
udp        0      0 0.0.0.0:68              0.0.0.0:*                           0          15715

Respuestas (3)

Parece que se realizaron muchos cambios en web3, por lo que para acceder ahora a las cuentas, debe usar lo siguiente:

web3.eth.personal.getAccounts().then(res => console.log(res)) para listar todas las cuentas... o web3.eth.personal.getAccounts().then(res => console.log (res[0])) para mostrar la cuenta[0], etc.

Instalación y uso

Clonar repositorio y ejecutar

npm install

Luego inicie el servidor testpc con

npm run ganache

y de una concha separada

npm run http_server

Luego dirija su navegador a http://localhost:8000la versión web de la aplicación de votación.

El server.jsarchivo incluye la configuración y la implementación de VotingContract. A modo de comparación, debería poder seguir el tutorial original para tener una idea de lo que se cambió de los enlaces anteriores a 1.0 web3a 1.0 .web3

por favor pruébalo No funciona y el enlace de ayuda Gracias

Intenta eliminar el doble 'noticias':

var web3 = new Web3.providers.HttpProvider('http://localhost:8545')
¿Eso no daría como resultado solo un objeto de proveedor web3? ¿Entonces necesitaría lanzar un nuevo objeto base web3 con eso? Corrígeme si estoy equivocado.
Estás en lo correcto. Me perdí por completo ese paso en mi código y solo copié una línea. lol el resto de mi código es nuevo otra vez, var web3 = new Web3(web3); Tanto por tratar de ayudar lol