Blockchain core.addProviders不是一个函数
我正在尝试运行我的Blockchain core.addProviders不是一个函数,blockchain,ethereum,solidity,web3,truffle,Blockchain,Ethereum,Solidity,Web3,Truffle,我正在尝试运行我的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 HDW
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)
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!');
});
});
C:\Users\Kartik.Ganiga\Desktop\BlockChain\Ethereum\campaign\node\u modules\web3\src\index.js:76
core.addProviders(Web3);
^
TypeError:core.addProviders不是函数
反对。(C:\Users\Kartik.Ganiga\Desktop\BlockChain\Ethereum\campaign\node\u modules\web3\src\index.js:76:6)
at模块编译(内部/modules/cjs/loader.js:689:30)
at Object.Module._extensions..js(internal/modules/cjs/loader.js:700:10)
在Module.load(内部/modules/cjs/loader.js:599:32)
在tryModuleLoad(内部/modules/cjs/loader.js:538:12)
at Function.Module._load(内部/modules/cjs/loader.js:530:3)
at Module.require(内部/modules/cjs/loader.js:637:17)
根据需要(内部/modules/cjs/helpers.js:20:18)
反对。(C:\Users\Kartik.Ganiga\Desktop\BlockChain\Ethereum\campaign\Ethereum\deploy.js:2:14)
at模块编译(内部/modules/cjs/loader.js:689:30)
at Object.Module._extensions..js(internal/modules/cjs/loader.js:700:10)
在Module.load(内部/modules/cjs/loader.js:599:32)
在tryModuleLoad(内部/modules/cjs/loader.js:538:12)
at Function.Module._load(内部/modules/cjs/loader.js:530:3)
位于Function.Module.runMain(内部/modules/cjs/loader.js:742:12)
启动时(内部/bootstrap/node.js:279:19)
web3.js(位于node_模块内)文件的代码如下:
/*
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;
/*
此文件是web3.js的一部分。
web3.js是免费软件:您可以重新发布和/或修改它
它是根据GNU Lesser General Public License的条款发布的
自由软件基金会,或者许可证的第3版,或者
(由您选择)任何更高版本。
发布web3.js是希望它会有用,
但无任何保证;甚至没有任何关于
适销性或适合某一特定目的。见
GNU Lesser通用公共许可证了解更多详细信息。
您应该已经收到GNU Lesser通用公共许可证的副本
还有web3.js。如果没有,请参阅。
*/
/**
*@file index.js
*@作者:
*费边·沃格斯泰勒
*Gav木材
*杰弗里·威尔克
*马雷克·科特维奇
*玛丽安·奥恩西亚
*@date 2017
*/
“严格使用”;
var version=require('../package.json').version;
var core=require('web3-core');
var Eth=要求('web3-Eth');
var Net=要求('web3-Net');
var Personal=要求('web3-eth-Personal');
var Shh=要求('web3-Shh');
var Bzz=要求('web3-Bzz');
var utils=require('web3-utils');
var Web3=函数Web3(){
var_this=这个;
//设置请求管理器等
core.packageInit(这个,参数);
this.version=版本;
this.utils=utils;
this.eth=新的eth(this);
this.shh=新shh(this);
this.bzz=新的bzz(this);
//覆盖包设置提供程序
var setProvider=this.setProvider;
this.setProvider=函数(提供程序,网络){
setProvider.apply(_this,arguments);
此.eth.setProvider(提供程序,网络);
this.shh.setProvider(provider,net);
此.bzz.setProvider(提供程序);
返回true;
};
};
Web3.version=版本;
Web3.utils=utils;
Web3.modules={
以太:以太,
净:净,,
个人:个人,,
嘘:嘘,,
Bzz:Bzz
};
core.addProviders(Web3);
module.exports=Web3;
长话短说,要解决一个bug,我们需要添加两行代码,并将一行代码更改为测试文件。进行如下所示的三项更改:
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)
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!');
});
});
const assert=require('assert');
const ganache=require('ganache-cli');
const Web3=require('Web3');
//在这里更新这两行!!!!!{
//获取所有帐户的列表
accounts=wait web3.eth.getAccounts();
//使用其中一个帐户部署合同
收件箱=等待新的web3.eth.Contract(JSON.parse(接口))
.deploy({data:bytecode,参数:['Hi there!']})
.send({from:accounts[0],gas:'1000000'});
//在这里加上这一行{
它('部署合同',()=>{
assert.ok(inbox.options.address);
});
它('具有默认消息',异步()=>{
const message=wait inbox.methods.message().call();
assert.equal(消息“你好!”);
});
});
这对我来说是个问题tooo:-
然后我切换了我的web3版本:-
致:
它工作正常请确保您的geth也在终端中运行。只需在终端上运行
geth
。您的web3版本为“web3”:“^1.0.0-beta.37”
在package.json中