Estoy usando metamask para conectarme a la red rinkeby. Puedo ver que metamask inyecta el código web3 muy bien, aún así obtengo el archivo Error: Provider not set or invalid
. Aquí está el script js que escribí.
var Web3 = require('web3');
var web3 = new Web3();
if (typeof web3 !== 'undefined') {
console.log("Using web3 detected from external source like Metamask");
web3 = new Web3(web3.setProvider(web3.currentProvider));
} else {
console.log("Using localhost");
web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
}
var account = web3.eth.accounts[0];
console.log(account);
Aquí está el error que estoy recibiendo
Estoy usando el paquete web, web3 0.20.4. ¿Cómo puedo solucionar esto?
En realidad, no debería configurar un proveedor dentro de una new Web3
instancia si ya tiene el archivo web3.currentProvider
.
Reemplazar:
web3 = new Web3(web3.setProvider(web3.currentProvider));
con:
web3 = new Web3(web3.currentProvider);
Además, no cree la web3
instancia antes de verificar la versión del navegador.
Reemplace la línea:
var web3 = new Web3();
con:
var web3 = window.web3;
Madara Uchiha
var web3 = new Web3();
se usa en muchos tutoriales y funcionó para ellos. Soy bastante nuevo en cosas js. ¿ Puedes decirme qué está pasando en estavar web3 = window.web3;
línea?reyhaynes
var web3 = new Web3()
, básicamente sobrescribe la opción para verificar la versión de los navegadores. Sutypeof web3 !== 'undefined'
verificación solo verificaría correctamente la versión del navegador/metamask si lo hicieratypeof window.web3 !== 'undefined'
. Tampoco tenía mucho sentido iniciar unanew Web3
instancia en la segunda línea cuando suif/else
declaración lo hace de todos modos.Vyachaslav Gerchicov