2017-01-01 24 views
1

私は最初のdappを動作させようとしています。私は近づいているのを知っていますが、web3には問題が残っています。キャッチされていないReferenceError:web3がwindow.onloadで定義されていません

私はPowerShellの経由testrpcノードを実行している、のWindows 10 に取り組んでいます。私はトリュフを使用して、&サンプルファイルをフォルダに設定し、コンパイルして移行しました。

私はトリュフによって建て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(); 
    }); 
} 

私はでHTMLファイルを開くことができますよChromeブラウザ、MetaMaskプラグインが有効です。しかし、web3のエラーのために、何らかの形で契約と対話できないようです。正確なメッセージはこの投稿の件名です。

ご協力いただきありがとうございます。

答えて

2

どうぞご覧ください。私はオンロードが問題を与えていると思う。

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

ありがとう、@Ranadip Dutta!私はあなたが示したように変更を加え、$が定義されていないというエラーメッセージが出ます。そこで、$を削除して、ページにエラーがなくなりました。したがって、問題のコード行は次のようになります。 '(ウィンドウ).load function(){ ...' –

+0

これは実際には.load関数で発生します。それを渡すには複数の方法があります。とにかく、それがうまくいくならば十分です。 :) –

関連する問題