Javascript 未捕获引用错误:未在window.onload上定义web3

Javascript 未捕获引用错误:未在window.onload上定义web3,javascript,google-chrome,powershell,ethereum,truffle,Javascript,Google Chrome,Powershell,Ethereum,Truffle,我正在努力让我的第一个dapp工作;我知道我很接近了,但是一直在web3上遇到问题 我正在使用Windows10,通过PowerShell运行testrpc节点。我使用truffle设置文件夹和示例文件,然后编译和迁移 我不认为我改变了由truffle构建的app.js文件中的任何内容。。。这是代码: var accounts; var account; function setStatus(message) { var status = document.getElementById("

我正在努力让我的第一个dapp工作;我知道我很接近了,但是一直在web3上遇到问题

我正在使用Windows10,通过PowerShell运行testrpc节点。我使用truffle设置文件夹和示例文件,然后编译和迁移

我不认为我改变了由truffle构建的app.js文件中的任何内容。。。这是代码:

var accounts;
var account;

function setStatus(message) {
  var status = document.getElementById("status");
  status.innerHTML = message;
};

function refreshBalance() {
  var meta = MetaCoin.deployed();

  meta.getBalance.call(account, {from: account}).then(function(value) {
    var balance_element = document.getElementById("balance");
    balance_element.innerHTML = value.valueOf();
  }).catch(function(e) {
    console.log(e);
    setStatus("Error getting balance; see log.");
  });
};

function calcPremium() {
    var premium = parseInt(document.getElementById("benefit").value)/10000;
    document.getElementById("monthlyPremium").innerHTML = "    Monthly Premium: $"+premium.toFixed(2);

};

function sendCoin() {
  var meta = MetaCoin.deployed();

  var amount = parseInt(document.getElementById("monthlyPremium").value);
  var receiver = document.getElementById("receiver").value;

  setStatus("Initiating transaction... (please wait)");

  meta.sendCoin(receiver, amount, {from: account}).then(function() {
    setStatus("Transaction complete!");
    refreshBalance();
  }).catch(function(e) {
    console.log(e);
    setStatus("Error sending coin; see log.");
  });
};

window.onload = function() {
  web3.eth.getAccounts(function(err, accs) {
    if (err != null) {
      alert("There was an error fetching your accounts.");
      return;
    }

    if (accs.length == 0) {
      alert("Couldn't get any accounts! Make sure your Ethereum client is configured correctly.");
      return;
    }

    accounts = accs;
    account = accounts[0];

    refreshBalance();
  });
}
我能够在启用了MetaMask插件的Chrome浏览器中打开html文件。然而,由于web3错误问题,我似乎无法以任何方式与合同交互。确切的信息是这篇文章的主题


提前感谢您的帮助或指导

你能试试看吗。我认为超载是问题的症结所在

    $(window).load function() {
  web3.eth.getAccounts(function(err,accs) {
    if (err != null) {
      alert("There was an error fetching your accounts.");
      return;
    }

    if (accs.length == 0) {
      alert("Couldn't get any accounts! Make sure your Ethereum client is configured correctly.");
      return;
    }

    accounts = accs;
    account = accounts[0];

    refreshBalance();
  });
}

谢谢,@Ranadip Dutta!我按照您显示的那样进行了更改,并收到一条错误消息,$未定义。所以我删除了$,现在页面加载没有错误。因此,现在讨论的代码行是:
(window).load function(){…
实际上,这发生在.load函数中。有多种方法可以传递它。总之,如果它工作正常,那么就足够了。:)