ERROR DE CONEXIÓN: no se pudo conectar al nodo al intentar conectarse a ropsten

Tengo Metamask instalado en Chrome y estoy conectado a la red de prueba de Ropsten a través de allí. Sin embargo, cada vez que intento ejecutar mi Javascript, aparece el siguiente error: ERROR DE CONEXIÓN: no se pudo conectar al nodo. Cuando estaba ejecutando mi código en testrpc, funcionaba bien, pero no funciona cuando intento conectarme a ropsten.

JavaScript:

if(typeof web3 !== 'undefined'){
    console.log('metamask');
    web3 = new Web3(web3.currentProvider);

}

else{
    console.log('something else');
    web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
}

web3.eth.defaultAccount = web3.eth.accounts[0];
var betContractInstance = web3.eth.contract([MY ABI]);
var betContract = betContractInstance.at('0xed5ae2f841ce23cfe6ea9e39984e66afbf445143');

prueba.sol:

pragma solidity ^0.4.18;

contract Testing{
    address [] public adds;
    uint [] public amounts;

    function bet() public payable {
        adds.push(msg.sender);
        amounts.push(msg.value);
    }

    function give() public {
        adds[0].transfer(amounts[0]);
    }
}

El error surge en web3.eth.defaultAccount = web3.eth.accounts[0];. Intenté hacer web3global pero eso tampoco ayudó. ¿Alguien sabe cómo puedo arreglar esto? He visto esta pregunta antes, pero la mayoría usa geth en lugar de metamask. Además, la configuración de mi proyecto se basa en este tutorial , por lo que no estoy seguro de que haya otras dependencias que necesite.

Muchas gracias de antemano.

EDITAR: la salida a la consola es "algo más", así que supongo que no está detectando el Web3 inyectado por metamask.

Respuestas (1)

Defina la detección web3 después de que loadse disparó el evento en la página para obtener web3el objeto, como se sugiere en la guía de detección de MetMask :

window.addEventListener('load', function() {
   //read web3 object here
})