Ниже приведен код nodejs для развертывания смарт-контракта из файла в локальную частную сеть ethereum.
const fs = require('fs');
const Web3 = require('web3');
const solc = require('solc');
const web3 = new Web3();
web3.setProvider(web3.providers.HttpProvider('http://localhost:8545'));
const address = web3.eth.accounts[0];
const code = fs.readFileSync('../Calculator.sol').toString()
const compiledCode = solc.compile(code)
const abiDefinition = JSON.parse(compiledCode.contracts[':Calculator'].interface)
const byteCode = compiledCode.contracts[':Calculator'].bytecode
const CalcContract = web3.eth.contract(abiDefinition)
Я ниже зависимостей в package.json
"dependencies": {
"ethereumjs-testrpc": "^6.0.3",
"fs": "0.0.1-security",
"solc": "^0.5.9",
"web3": "^1.0.0-beta.55"
}
Когда я запускаю программу, я получаю ошибку ниже в строке web3.setProvider(web3.providers.HttpProvider('http://localhost:8545'));
[raj@localhost first_truffle_project]$ sudo node js/example_deployer.js
/home/raj/Coding/Ethereum/first_truffle_project/js/example_deployer.js:6
web3.setProvider(web3.providers.HttpProvider('http://localhost:8545'));
^
TypeError: Cannot read property 'HttpProvider' of undefined
at Object.<anonymous> (/home/raj/Coding/Ethereum/first_truffle_project/js/example_deployer.js:6:33)
at Module._compile (internal/modules/cjs/loader.js:776:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:829:12)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
Что не так с моей программой? Как я могу решить эту ошибку?
Попробуйте так:
web3 = new Web3(new Web3.providers.HttpProvider('node-url'))
Убедитесь, что ваша версия Web 3 в package.json
"web3": "^1.0.0-beta.37"
Я полагаю, вы хотите что-то вроде этого. (Обратите внимание на заглавные буквы.)
var Web3 = require('web3');
var web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:8545'));