Web3 代码在终端中运行但在我的 IDE 中不起作用

Web3 code working in terminal but not my IDE

我对 web3 很陌生,对 JavaScript 也比较陌生。以下代码 returns 未定义变量帐户。

这是我的代码:

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

代码完全在终端中运行,打印出账户列表。但是,当我在 IDE 中 运行 它时,它说未定义。我已经尝试了多种方法,例如甚至声明要从 web3.eth.getAccounts() 调用的新函数作为回调,设置帐户变量。没有任何效果。

getAccounts() 函数 returns 比 console.log 晚解析的承诺,因此在设置 accounts 变量之前。

您可以在设置 accounts 变量后使用它(注意 callback hell

web3.eth.getAccounts().then(acc => {
    accounts = acc;
    console.log(accounts);
});

或在 async 函数中使用 await 表达式

async function run() {
    var accounts;
    accounts = await web3.eth.getAccounts();
    console.log(accounts);
}

run();