【问题标题】:Web3: No provider setWeb3:没有提供者集
【发布时间】:2018-06-10 08:09:43
【问题描述】:

我正在使用 web3 (1.0.0-beta.27) 编写脚本,我正在尝试部署合约并监听事件。

这是代码的简化版本:

const Web3 = require('web3');

let web3 = new Web3('http://localhost:8545');

let MyContract = new web3.eth.Contract(abi);

let accounts = await web3.eth.getAccounts();
let contract = await MyContract.deploy({data: code})
  .send({from: accounts[0], gas: 1000000});

contract.events.MyEvent((error, result) => {
  if (error) {
    return console.error(error);
  }
}

但是,当我运行代码时,我收到以下错误:

Error: No provider set.
    at Subscription.subscribe (/node_modules/web3-core-subscriptions/src/subscription.js:199:20)
    at Contract._on (/node_modules/web3-eth-contract/src/index.js:634:18)

我的理解是,将 URL 传递给 Web3 构造函数会设置提供程序,但这似乎不起作用。

【问题讨论】:

    标签: ethereum web3js web3


    【解决方案1】:

    创建Web3 时需要传入HttpProvider。改变

    let web3 = new Web3('http://localhost:8545');

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

    或者,您可以在创建Web3后设置提供者:

    const web3 = new Web3();
    
    web3.setProvider(new web3.providers.HttpProvider('http://localhost:8545'));
    

    【讨论】:

    猜你喜欢
    • 2017-08-13
    • 2022-01-05
    • 2021-05-06
    • 2019-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多