POST https://kovan.infura.io/MG.......... 405 () + Error no detectado: respuesta JSON RPC no válida: "" con web3js y metamask

Estoy tratando de crear un sitio web que permita a alguien interactuar con mi contrato (implementado a través de una remezcla usando metamask en kovan), pero obtengo el error anterior cuando intento una función firmada. Todas las funciones sin firmar funcionan perfectamente.

Un problema que creo es esta sección de código:

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

En mi sitio web da una matriz vacía, pero en https://codepen.io/anon/pen/KoRWyZ devuelve ["0x92165d2b80974733b7115e3cbf8285e70132d9e9"].

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);

Cuando intento ejecutar una función firmada en contractInst, aparece el error anterior. He intentado usar tanto wamp como heliohost (http) pero ninguno funciona.

Respuestas (1)

Intenta poner tu entre esto:

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

    //Your code here..

});
Gracias, tuve que actualizar web3.js a beta 33 y usar esto, pero finalmente funcionó.