2017-12-30 5 views
0

Ich schreibe ein Skript mit Web3 (1.0.0-Beta.27), wo ich versuche, einen Vertrag bereitzustellen und auf ein Ereignis zu hören.Web3: Kein Provider festgelegt

Hier ist die vereinfachte Version des Codes:

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

Allerdings, wenn ich den Code ausführen, bekomme ich folgende Fehlermeldung:

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) 

Mein Verständnis war, dass das Bestehen der URL zum Web3 Konstruktor würde den Anbieter festlegen, aber das scheint nicht zu funktionieren.

Antwort

0

Sie müssen HttpProvider eingeben, wenn Sie Web3 erstellen. Ändern

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

zu

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

oder können Sie den Anbieter festgelegt, nachdem Web3 erstellen:

const web3 = new Web3(); 

web3.setProvider(new web3.providers.HttpProvider('http://localhost:8545')); 
+0

noch nicht funktioniert. Die [web3-Dokumentation] (http://web3js.readthedocs.io/en/1.0/web3.html#setprovider) scheint zu implizieren, dass beide Formen gleichwertig sind. –

Verwandte Themen