Web3 未连接

Web3 Not Wiring Up

我用 truffle unbox react 创建了一个新项目,假设我使用 Infura 将 dapp 直接部署到 Rinkeby 我在 app.js

中与 web3 交互时遇到问题

我的 src 文件夹中有一个 web3 文件,这里是它的内容

import Web3 from 'web3';

let web3 = new Promise(function(resolve, reject) {

window.addEventListener('load', function() {
 var results
 var web3 = window.web3

if (typeof web3 !== 'undefined') {
  web3 = new Web3(web3.currentProvider)

  results = {
    web3: web3
  }
  console.log(web3);
  console.log('Injected web3 detected.');

  resolve(results)
} else {
  var provider = new Web3.providers.HttpProvider('http://127.0.0.1:9545')

  web3 = new Web3(provider)

  results = {
    web3: web3
  }

  console.log('No web3 instance injected, using Local web3.');

  resolve(results)
  }
 })  
})

 export default web3

然后我将该文件导入我的 app.js

import web3 from './web3';

我只是调用了一个 JSX 段落标签

  <p>  web3.utils.fromWei(this.state.balance, 'ether')  </p>

我在控制台日志中得到的错误如下:"Uncaught TypeError: Cannot read property 'fromWei' of undefined"

我在(可能不正确的)假设下操作,即当我 运行 truffle unbox react 命令时下载了 web3,因此无需使用 npm 安装它。

有什么地方出错了吗?

谢谢!

这是您必须等待的异步调用。 await web3.utils.fromWei(this.state.balance, 'ether') 应该可以。