web3.eth.accounts[0]がundefinedなあなたへ

書籍やネットのサンプルコードにある

truffle(develop)> web3.eth.accounts[0]

を実行するも、

undefined

と返ってきて(アカウントのアドレスが表示されるはずなのに・・・)となっている方へ。サンプルコードが想定しているweb3のバージョンと、動作環境のweb3のバージョンが異なるのかもしれません。

truffle(develop)> web3.version
'1.0.0-beta.37'

のように、1.0系だと、web3の仕様が変わってしまったことにより、期待する結果が得られません。その場合、このようにすると、アカウントIDが得られます。

truffle(develop)> accounts = await web3.eth.getAccounts()
undefined
truffle(develop)> accounts
[ '0x9FEbCc63B06f28D6F66E2B309c5fC24Fe029eeE2',
  '0x23a5fef33C8CD1b38b5bbB3674908F517f055696',
  '0x87D2123D8C7E57cFAb6bC9DaE47d8EE5Ea72650C',
  '0x703475B7a3E7fA71b8A7b71b598e2F0E88D96a55',
  '0xfF4f766BbC88002B04156172a0B915fD3Eb1dA04',
  '0xAF85CA8039a687b9073988551F77395480493969',
  '0x5420c64E29ffbf9E066Bcea3fe4C51Ba1b16836E',
  '0x8795b087BFd15C53829132DDEA3B48654aB61BC6',
  '0x0cccB9Cb7804414963093Cde33d51feB80eEdaec',
  '0x4Fd541B8d4A7bD500CeC43e0BB209e665F4645fF' ]
truffle(develop)> accounts[0]
'0x9FEbCc63B06f28D6F66E2B309c5fC24Fe029eeE2'

web3.eth.getAccounts()でアカウント一覧を取得するのですが、return されるのは Promise のため、await でPromiseの実行を待って、その結果を取得しています。

参考

https://ethereum.stackexchange.com/questions/38651/web3-cannot-get-accounts