web3.setProvider no es una función

Estoy tratando de aprender sobre web3.js que instalo

npm install ethereumjs-testrpc

y

npm install web3  // version 0.20.6
npm install ganache-cli // version 6.0.3

entonces uso el siguiente código

var TestRPC = require("ethereumjs-testrpc");
var web3 = require("web3");
var ganache = require("ganache-cli");
//~ web3.setProvider(TestRPC.provider());
web3.setProvider(new web3.providers.HttpProvider('http://localhost:8545')); 
//~ var web3 = new web3(web3.givenProvider || ganache.server());

//~ var web3 = new web3(web3.givenProvider || 'ws://some.local-or-remote.node:8546');
//~ web3.setProvider(new web3.providers.HttpProvider('http://localhost:8545'));
//~ web3.setProvider(new web3.providers.HttpProvider('http://geth-node-ip:8545'));
//~ console.log(web3.isAddress("0x8888f1f195afa192cfee860698584c030f4c9db1"))




//~ web3.setProvider(TestRPC.provider());
//~ console.log(web3.version);
//~ console.log(web3.providers);

error diceweb3.setProvider is not a function

Respuestas (3)

Creo que quieres algo como esto. (Tenga en cuenta las mayúsculas).

var Web3 = require('web3');
var web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:8545'));
Gracias por tu respuesta encontré la solución. La conexión testrpc está detenida. no me doy cuenta de eso. Gracias

Asegúrese de que su versión Web 3 en package.json sea

"web3": "^1.0.0-beta.37"

Ok, tengo el problema. De acuerdo con los documentos de Web3-docs-link (web3), setProvider() se usa para cambiar el proveedor de web3, si está configurando el proveedor por primera vez, debe usarlo en este forma:

var Web3 = require('web3');
var web3 = new Web3('http://localhost:8545');
// or
var web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:8545'));

// change provider
web3.setProvider('ws://localhost:8546');
// or
web3.setProvider(new Web3.providers.WebsocketProvider('ws://localhost:8546'));