Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Cannot read properties of undefined (reading 'eth')の解決策を教えてください。

解決したいこと

Arcelloを活用して3DのNFTを販売するWebアプリをつくっています。
https://github.com/UltimateRoman/Arcello
README.mdを読みながら読み進めていきましたが、
最後のcd Arcelloを入力した後に「Cannot read properties of undefined (reading 'eth')」のエラーが
発生しますのでこのエラーを無くしたいです。

発生している問題・エラー

37 | 
  38 |    async loadBlockchainData() {
  39 |        const web3 = window.web3
> 40 |        const accounts = await web3.eth.getAccounts()
     | ^  41 |        this.setState({ account: accounts[0] })
  42 |        const networkId = await web3.eth.net.getId()
  43 |        const networkData = Arcello.networks[networkId]
19 | 
  20 |    async componentWillMount() {
  21 |        await this.loadWeb3()
> 22 |        await this.loadBlockchainData()
     | ^  23 |    }
  24 | 
  25 |    async loadWeb3() {

上記の「const accounts = await web3.eth.getAccounts()」にエラーが発生しています。

自分で試したこと

ここに問題・エラーに対して試したことを記載してください。
「Cannot read properties of undefined (reading 'eth')」を検索をして以下のサイト
https://stackoverflow.com/questions/70412807/typeerror-cannot-read-properties-of-undefined-reading-eth を参考にしてみました。

しかし、どこを修正していいかわかりませんでしたのでエラーの原因である「web3.eth.getAccounts()」を調べてみるとweb3.ethが読み込んでいないことが分かりました。

このweb3.ethを調べるとweb3-ethをインストールする必要が以下のあるようなので 「npm install -g web3-eth」を行いましたが状況は変わりませんでした。
https://web3js.readthedocs.io/en/v1.2.11/web3-eth.html

ここからどのように修正すればよろしいでしょうか。

バージョン

+-- truffle@5.5.2
+-- web3-eth@1.7.0
`-- web3@1.7.0

0

2Answer

Cannot read properties of undefined (reading 'eth')

これは undefined がプロパティ eth を持っていないという意味のエラーです。

つまり

const accounts = await web3.eth.getAccounts()

この web3 自体の値が undefined であるということです。

const web3 = window.web3

まず window の値を確認してください。window がオブジェクトであれば web3 プロパティを持っているかを確認してください。

3Like

ありがとうございます!
返信遅れてすみません。
web3をコマンドプロンプトで「npm install web3」をしてみましたが、
上手くいきませんでしたので@itagaki様の「window」オブジェクトをインストールしてみます!
分からないことがあったらまた質問しますのでよろしくお願いいたします。

0Like

Your answer might help someone💌