Search code examples
javascriptweb3jstruffle

Convert BN to number


In truffle console I am executing the following statement,

result = token.balanceOf(accounts[1])

This statement returns the following output.

<BN: 8ac7230489e80000>

As suggested here, I am trying to use toNumber() and toString. But I am getting the following error.

result = token.balanceOf(accounts[1])
result.toString()
output: '[object Promise]'
result.toNumber()
TypeError: result.toNumber is not a function

Solution

  • Based on the output it seems you get a Promise. At the moment of running the "result.toString()" command - it's still a promise that haven't been fulfilled yet.

    As @Saddy mentioned in the comment, You need to wait for the promise to be fulfilled before you could use the toString() method on its value.

    You should add "await" prior to the method.

    See the example in truffle documentation (https://www.trufflesuite.com/docs/truffle/quickstart):

    Check the metacoin balance of the account that deployed the contract:

    truffle(development)> let balance = await instance.getBalance(accounts[0])
    truffle(development)> balance.toNumber()