路由正在发送空响应

route is sending empty response

我有这个控制器

 const getBalance = async (address, network) => {
  const web3 = getWeb3Instance(network);
  const currentBalance = await web3.eth.getBalance(address);
  const formattedBalance = web3.utils.fromWei(currentBalance, 'ether');
  return formattedBalance
};

这是我在路线中使用它的方式:

 router.post('/getBalance', (req, res) => {
  const {address,network} = req.body
  try {
    res.status(200).send(controllers.getBalance(address,network))
  } catch (e) {
    res.status(404).send(`${e}`)
  }
});

当我 console.log(formattedBalance) 它记录了正确的答案但在响应中它发送了空对象 {} 我不知道为什么,我正在使用 nodejs 和 web3。 有什么建议吗?

你的函数前面有 async 这个词。如果将 async 放在函数前面,函数会有不同的行为。它就像一个承诺。

你试过了吗console.log(controllers.getBalance(address,network))?在浏览器中你会看到 Promise { <pending> }

问题是您发回了待处理的承诺。

改成这样。您需要等到承诺解决

 router.post('/getBalance', async (req, res) => {
  const {address,network} = req.body
  try {
    let balance = await controllers.getBalance(address,network);
    res.status(200).send(balance)
  } catch (e) {
    res.status(404).send(`${e}`)
  }
});