core.addProviders не является функцией - PullRequest
0 голосов
/ 27 января 2019

Я пытаюсь запустить мой deploy.js файл с кодом:

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();

И когда я запускаю node deploy.js: теперь выдает ошибку, которая раньше работала нормально, Ошибка показана ниже:

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)

и файл web3.js (который находится внутри node_modules) имеет код:

/*
    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 <fabian@ethereum.org>
 *   Gav Wood <gav@parity.io>
 *   Jeffrey Wilcke <jeffrey.wilcke@ethereum.org>
 *   Marek Kotewicz <marek@parity.io>
 *   Marian Oancea <marian@ethereum.org>
 * @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;

Ответы [ 3 ]

0 голосов
/ 01 февраля 2019

это было проблемой для меня: - затем я переключил свою версию web3: - на:

1.0.0-beta.37

все работало нормально

0 голосов
/ 27 марта 2019

Убедитесь, что ваш geth работает и в терминале.Просто запустите geth на своем терминале.Ваш web3 имеет версию "web3": "^1.0.0-beta.37" в package.json

0 голосов
/ 28 января 2019

Короче говоря, чтобы обойти ошибку, нам нужно добавить две дополнительные строки и изменить одну строку кода в нашем тестовом файле.Сделайте три изменения, показанные ниже:

const assert = require('assert');
const ganache = require('ganache-cli');
const Web3 = require('web3');

// UPDATE THESE TWO LINES RIGHT HERE!!!!! <-----------------
const provider = ganache.provider();
const web3 = new Web3(provider);

const { interface, bytecode } = require('../compile');

let accounts;
let inbox;

beforeEach(async () => {
// Get a list of all accounts
accounts = await web3.eth.getAccounts();
// Use one of those accounts to deploy the contract
inbox = await new web3.eth.Contract(JSON.parse(interface))
  .deploy({ data: bytecode, arguments: ['Hi there!'] })
  .send({ from: accounts[0], gas: '1000000' });

// ADD THIS ONE LINE RIGHT HERE!!!!! <---------------------
inbox.setProvider(provider);
 });

describe('Inbox', () => {
   it('deploys a contract', () => {
      assert.ok(inbox.options.address);
     });
   it('has a default message', async () => {
      const message = await inbox.methods.message().call();
      assert.equal(message, 'Hi there!');
     });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...