Web3:没有提供者集
Posted
技术标签:
【中文标题】Web3:没有提供者集【英文标题】:Web3: No provider set 【发布时间】: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 构造函数会设置提供程序,但这似乎不起作用。
【问题讨论】:
【参考方案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'));
【讨论】:
还是不行。 web3 documentation 似乎暗示这两种形式是等价的。以上是关于Web3:没有提供者集的主要内容,如果未能解决你的问题,请参考以下文章