javascript - 未捕获的 ReferenceError : web3 is not defined at window. onload

标签 javascript google-chrome powershell ethereum truffle

我正在尝试让我的第一个 dapp 工作;我知道我很接近,但一直遇到 web3 问题。

我在 Windows 10 上工作,通过 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 错误问题,我似乎无法以任何方式与契约(Contract)进行交互。确切的消息是这篇文章的主题行。

在此先感谢您的帮助或指导!

最佳答案

请你试试看。我认为 onload 给出了问题。

    $(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();
  });
}

关于javascript - 未捕获的 ReferenceError : web3 is not defined at window. onload,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41419247/

相关文章:

python - 无法将参数传递给 selenium 中的 chrome 驱动程序

powershell - .Bat 文件无法运行 powershell 7

javascript - Coffeescript、Facebook JS API 和范围

javascript - Angular JS Controller 功能未进入

javascript - 带有 php 决策的排队脚本

javascript - 页面加载后从 EpicEditor 中的文本区域同步值

javascript - 如何隐藏 chrome 检查器的扩展请求?

javascript - 如何限制 chrome 中的最大文本区域宽度和高度或如何禁用文本区域调整大小

python - 需要 Powershell 帮助进行 Python 编程

Powershell - 可以通过右键单击 "run with powershell"来确定脚本是否运行吗?