Cliente local de inyección Metamask independiente

Es demasiado confuso para mí. Intenté todo.

Si ejecuto el código en node.js con browserfy... todo funciona bien.

No, quiero ejecutarlo en mi servidor web. Como dice MetaMask, ya no inyectará el objeto web3 global. Así que descargo el web3.js aquí y lo agrego en el archivo html con: Ok. Ahora lo hago:

   window.addEventListener('load', function () {

     if (typeof Web3 !== 'undefined') {
        window.web3 = new Web3(window.web3.currentProvider);
        console.log('Found web3!');
        console.log('Your Account: '+ web3.eth.accounts[0]);
        startApp();
     } else {
        console.log("No web3!");
        getWeb3();
     }
});

Pero esto me da

No se puede leer la propiedad 'currentProvider' de undefined

Bien, luego probé:

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

devoluciones:

web3 no está definido

También probé diferentes delgadas como:

    if (typeof Web3 !== 'undefined') {
        var web3 = new Web3(window.web3.currentProvider);

Bueno, todo lo que intento, fracaso. ¿Me equivoqué de concepto?

¿Cómo puedo alojar un sitio web y conectarme al proveedor de MetaMask?

Respuestas (1)

Ok, creo que lo descubrí yo mismo.

https://github.com/MetaMask/faq/blob/master/DEVELOPERS.md

establece en el primer párrafo

Http(s) - Servidor web requerido Debido a las restricciones de seguridad del navegador, no podemos comunicarnos con dapps que se ejecutan en el archivo://. Utilice un servidor local para el desarrollo.

No importa. Pero tal vez ayude a alguien más.

el objeto todavía está a veces indefinido ya veces no. pero esto es seguro otro problema :/