POST https://kovan.infura.io/MG.......... 405 () + Nicht erfasster Fehler: Ungültige JSON-RPC-Antwort: „“ mit web3js und Metamaske

Ich versuche, eine Website zu erstellen, auf der jemand mit meinem Vertrag interagieren kann (bereitgestellt durch Remix mit Metamask auf Kovan), aber ich erhalte den obigen Fehler, wenn ich eine signierte Funktion versuche. Alle unsignierten Funktionen funktionieren einwandfrei.

Ein Problem ist meiner Meinung nach dieser Abschnitt des Codes:

web3.eth.getAccounts(function (error, accounts) {
  if (error) return console.error(error)
  console.log(accounts)
})

Auf meiner Website gibt es ein leeres Array, aber auf https://codepen.io/anon/pen/KoRWyZ gibt es ["0x92165d2b80974733b7115e3cbf8285e70132d9e9"] zurück.

if (typeof web3 !== 'undefined') {
  web3 = new Web3(web3.currentProvider);
  //web3 = new Web3(new Web3.providers.HttpProvider("https://kovan.infura.io/MGb05nymXluRaB7138hk"));
} else {
  web3 = new Web3(new Web3.providers.HttpProvider("https://kovan.infura.io/MGb05nymXluRaB7138hk"));
}
web3.eth.getBlock(48, function(error, result){
    if(!error)
        console.log(result)
    else
        console.error(error);
})
web3.eth.getAccounts(function (error, accounts) {
  if (error) return console.error(error)
  console.log(accounts)
})

web3.eth.defaultAccount = web3.eth.accounts[0];
var MContract = web3.eth.contract([ABI]);
var ContractIst = papyrContract.at('address');
console.log(ContractIst);

Wenn ich versuche, eine signierte Funktion auf der contractInst auszuführen, erhalte ich den obigen Fehler. Ich habe versucht, sowohl wamp als auch heliohost (http) zu verwenden, aber beides funktioniert nicht.

Antworten (1)

Versuchen Sie, Ihr dazwischen zu setzen:

// Wait for loading completion to avoid race conditions with web3 
injection timing.
window.addEventListener('load', function() {

    //Your code here..

});
Danke, ich musste web3.js auf Beta 33 aktualisieren und dies verwenden, aber es hat schließlich funktioniert.