Intellipaat Back

Explore Courses Blog Tutorials Interview Questions
0 votes
2 views
in Blockchain by (4.1k points)

I'm trying to run my deploy.js file which has the code :

const HDWalletProvider = require("truffle-hdwallet-provider");

const Web3 = require("web3");

const compiledFactory = require('./build/CampaignFactory.json');

//const web3 = new Web3(provider);

const provider = new HDWalletProvider(

  "[12 word mnemonic]",

  "[rinkeby api from infura]"

);

const web3 = new Web3(provider);

const deploy = async () => {

  const accounts = await web3.eth.getAccounts();

  console.log("Attempting to deply from account", accounts[0]);

  const result = await new web3.eth.Contract(JSON.parse(compiledFactory.interface))

    .deploy({ data: compiledFactory.bytecode })

    .send({ gas: '1000000', from: accounts[0] });

  //console.log(interface);

  console.log("Contract deployed to", result.options.address);

};

deploy();

And when I run node deploy.js: it is throwing the error now, which was working fine before, The Error is shown below:

C:\Users\Kartik.Ganiga\Desktop\BlockChain\Ethereum\campaign\node_modules\web3\src\index.js:76

core.addProviders(Web3);

     ^

TypeError: core.addProviders is not a function

    at Object.<anonymous> (C:\Users\Kartik.Ganiga\Desktop\BlockChain\Ethereum\campaign\node_modules\web3\src\index.js:76:6)

    at Module._compile (internal/modules/cjs/loader.js:689:30)

    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)

    at Module.load (internal/modules/cjs/loader.js:599:32)

    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)

    at Function.Module._load (internal/modules/cjs/loader.js:530:3)

    at Module.require (internal/modules/cjs/loader.js:637:17)

    at require (internal/modules/cjs/helpers.js:20:18)

    at Object.<anonymous> (C:\Users\Kartik.Ganiga\Desktop\BlockChain\Ethereum\campaign\ethereum\deploy.js:2:14)

    at Module._compile (internal/modules/cjs/loader.js:689:30)

    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)

    at Module.load (internal/modules/cjs/loader.js:599:32)

    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)

    at Function.Module._load (internal/modules/cjs/loader.js:530:3)

    at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)

    at startup (internal/bootstrap/node.js:279:19)

and the web3.js(which is inside node_modules) file has the code:

/*

    This file is part of web3.js.

    web3.js is free software: you can redistribute it and/or modify

    it under the terms of the GNU Lesser General Public License as published by

    the Free Software Foundation, either version 3 of the License, or

    (at your option) any later version.

    web3.js is distributed in the hope that it will be useful,

    but WITHOUT ANY WARRANTY; without even the implied warranty of

    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

    GNU Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public License

    along with web3.js.  If not, see <http://www.gnu.org/licenses/>.

*/

/**

 * @file index.js

 * @authors:

 *   Fabian Vogelsteller <[email protected]>

 *   Gav Wood <[email protected]>

 *   Jeffrey Wilcke <[email protected]>

 *   Marek Kotewicz <[email protected]>

 *   Marian Oancea <[email protected]>

 * @date 2017

 */

"use strict";

var version = require('../package.json').version;

var core = require('web3-core');

var Eth = require('web3-eth');

var Net = require('web3-net');

var Personal = require('web3-eth-personal');

var Shh = require('web3-shh');

var Bzz = require('web3-bzz');

var utils = require('web3-utils');

var Web3 = function Web3() {

    var _this = this;

    // sets _requestmanager etc

    core.packageInit(this, arguments);

    this.version = version;

    this.utils = utils;

    this.eth = new Eth(this);

    this.shh = new Shh(this);

    this.bzz = new Bzz(this);

    // overwrite package setProvider

    var setProvider = this.setProvider;

    this.setProvider = function (provider, net) {

        setProvider.apply(_this, arguments);

        this.eth.setProvider(provider, net);

        this.shh.setProvider(provider, net);

        this.bzz.setProvider(provider);

        return true;

    };

};

Web3.version = version;

Web3.utils = utils;

Web3.modules = {

    Eth: Eth,

    Net: Net,

    Personal: Personal,

    Shh: Shh,

    Bzz: Bzz

};

core.addProviders(Web3);

module.exports = Web3;

1 Answer

0 votes
by (14.4k points)
edited by

This problem has a short and simple solution. Simply change your web3 version to 1.0.0-beta.37. Execute the code once you update your web3 version. It should work fine.

You can even check out the Blockchain Certification Course by Intellipaat to have more knowledge about this topic.

31k questions

32.8k answers

501 comments

693 users

Browse Categories

...