开发者问题收集

Web3 - 无法读取未定义的属性“setProvider”

2018-02-03
1329

我在前端使用 web3 库

当我使用以下文件运行我的应用程序时:

App = {
  web3Provider: null,
  contracts: {},

  init: function () {
    return App.initWeb3();
  },

  initWeb3: function () {

    // Is there an injected web3 instance?
    if (typeof web3 !== 'undefined') {
      App.web3Provider = web3.currentProvider;
    } else {
      // If no injected web3 instance is detected, fall back to Ganache
      App.web3Provider = new Web3.providers.HttpProvider('http://localhost:7545');
    }
    web3 = new Web3(App.web3Provider);

    return App.initContract();
  },

  initContract: function () {

    App.contracts.CryptoSportsToken.setProvider(App.web3Provider); // Here I get the error

    return App.bindEvents();
  },

  bindEvents: function () {
    var owner = $('#owner').val();
    var name = $('#name').val();
    var price = $('#price').val();

    console.log(owner + " " + name + " " + price)

    //createPromoPerson(address _owner, string _name, uint256 _price)
    $(document).on('click', '.btn-create', App.createPromoPerson(owner, name, price));
  },
};

$(function () {
  $(window).load(function () {
    App.init();
  });
});

我收到以下错误:

Uncaught TypeError: Cannot read property 'setProvider' of undefined at Object.initContract (create_app.js:25) at Object.initWeb3 (create_app.js:20) at Object.init (create_app.js:6) at create_app.js:44 at dispatch (jquery.min.js:3) at r.handle (jquery.min.js:3)

有什么建议可以告诉我为什么我在这个地方收到错误?

感谢您的回复!

1个回答

这不是 web3 错误。在第 25 行,您执行了

App.contracts.CryptoSportsToken

查看 App 中的 contracts 对象。它是空的。这就是错误报告的 CryptoSportsToken 未定义的原因。

nareddyt
2018-02-03