Soy muy nuevo en web3 y relativamente nuevo en JavaScript. El siguiente código devuelve undefined para las cuentas variables.
Aquí está mi código:
const Web3= require('web3'); var web3 = new Web3("HTTP://127.0.0.1:7545"); var accounts; web3.eth.getAccounts().then(acc=>{accounts = acc}); console.log(accounts); El código funciona completamente en la terminal, imprimiendo la lista de cuentas. Sin embargo, dice indefinido cuando lo ejecuto en el IDE. He intentado varias cosas, como incluso declarar una nueva función para llamar desde web3.eth.getAccounts() como una devolución de llamada, configurando la variable de cuenta. Nada funciona.
La función getAccounts() devuelve una promesa que se resuelve más tarde que console.log , por lo tanto, antes de que se establezca la variable de accounts .
Puede usar la variable de accounts después de que se haya configurado (cuidado con el infierno de devolución de llamada)
web3.eth.getAccounts().then(acc => { accounts = acc; console.log(accounts); }); o use la expresión await en una función async
async function run() { var accounts; accounts = await web3.eth.getAccounts(); console.log(accounts); } run();