Web3js
web3js 和 testrpc 的問題
並且在 testrpc 上的 web3js 有問題,我無法創建和設置 web3 的實例。終端說 web3 是未定義的。(參考錯誤)例如,當我嘗試執行契約中的方法時
var e = Mycontract.deployed();
我也有未定義的,當嘗試
console.log(e.address);
我已經安裝了 web3js
- 節點js-版本6~
- npm 版本 3~
- 布丁、松露也裝錯了
我需要安裝其他東西嗎?或重新安裝?
truffle(development)> Art.at(Art.address) TruffleContract { constructor: { [Function: TruffleContract] _static_methods: { setProvider: [Function: setProvider], new: [Function: new], at: [Function: at], deployed: [Function: deployed], defaults: [Function: defaults], hasNetwork: [Function: hasNetwork], isDeployed: [Function: isDeployed], detectNetwork: [Function: detectNetwork], setNetwork: [Function: setNetwork], resetAddress: [Function: resetAddress], link: [Function: link], clone: [Function: clone], addProp: [Function: addProp], toJSON: [Function: toJSON] }, _properties: { contract_name: [Object], abi: [Object], network: [Function: network], networks: [Function: networks], address: [Object], links: [Function: links], events: [Function: events], binary: [Function: binary], unlinked_binary: [Object], schema_version: [Function: schema_version], updated_at: [Function: updated_at] }, _property_values: {}, _json: { contract_name: 'Art', default_network: undefined, abi: [Object], unlinked_binary: '0x606060405234610000575b6101d9806100196000396000f300606060405263ffffffff60e060020a6000350416637183616c811461003a57806376dbd1081461008f578063faf924cf146100f4575b610000565b346100005761008d600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284375094965061011395505050505050565b005b34610000576100e2600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284375094965061012395505050505050565b60408051918252519081900360200190f35b34610000576100e26101a7565b60408051918252519081900360200190f35b61011c81610123565b6000555b50565b60006002826000604051602001526040518082805190602001908083835b602083106101605780518252601f199092019160209182019101610141565b51815160209384036101000a600019018019909216911617905260405191909301945091925050808303816000866161da5a03f1156100005750506040515190505b919050565b600054815600a165627a7a723058205af3325408f62f5b64135ac0e2eac3d1632e79f925249e4ce52266a8f02becdc0029', networks: [Object], schema_version: '0.0.5', updated_at: 1490993477853 }, setProvider: [Function: bound setProvider], new: [Function: bound new], at: [Function: bound at], deployed: [Function: bound deployed], defaults: [Function: bound defaults], hasNetwork: [Function: bound hasNetwork], isDeployed: [Function: bound isDeployed], detectNetwork: [Function: bound detectNetwork], setNetwork: [Function: bound setNetwork], resetAddress: [Function: bound resetAddress], link: [Function: bound link], clone: [Function: bound clone], addProp: [Function: bound addProp], toJSON: [Function: bound toJSON], web3: Web3 { _requestManager: [Object], currentProvider: [Object], eth: [Object], db: [Object], shh: [Object], net: [Object], personal: [Object], bzz: [Object], settings: [Object], version: [Object], providers: [Object], _extend: [Object] }, class_defaults: { from: '0x32f2e046d626c285bf6e60002dd4761209a5d8d2', gas: 4712388, gasPrice: 100000000000 }, currentProvider: HttpProvider { host: 'http://localhost:8545', timeout: 0 }, network_id: '1490993444046' }, abi: [ { constant: false, inputs: [Object], name: 'notarize', outputs: [], payable: false, type: 'function' }, { constant: true, inputs: [Object], name: 'calculateProof', outputs: [Object], payable: false, type: 'function' }, { constant: true, inputs: [], name: 'proof', outputs: [Object], payable: false, type: 'function' } ], contract: Contract { _eth: Eth { _requestManager: [Object], getBalance: [Object], getStorageAt: [Object], getCode: [Object], getBlock: [Object], getUncle: [Object], getCompilers: [Object], getBlockTransactionCount: [Object], getBlockUncleCount: [Object], getTransaction: [Object], getTransactionFromBlock: [Object], getTransactionReceipt: [Object], getTransactionCount: [Object], call: [Object], estimateGas: [Object], sendRawTransaction: [Object], sendTransaction: [Object], sign: [Object], compile: [Object], submitWork: [Object], getWork: [Object], coinbase: [Getter], getCoinbase: [Object], mining: [Getter], getMining: [Object], hashrate: [Getter], getHashrate: [Object], syncing: [Getter], getSyncing: [Object], gasPrice: [Getter], getGasPrice: [Object], accounts: [Getter], getAccounts: [Object], blockNumber: [Getter], getBlockNumber: [Object], protocolVersion: [Getter], getProtocolVersion: [Object], iban: [Object], sendIBANTransaction: [Function: bound transfer] }, transactionHash: null, address: '0x732e24b2de90ec2e009748a6bf2d379ed1eee072', abi: [ [Object], [Object], [Object] ], notarize: { [Function: bound ] request: [Function: bound ], call: [Function: bound ], sendTransaction: [Function: bound ], estimateGas: [Function: bound ], getData: [Function: bound ], string: [Circular] }, calculateProof: { [Function: bound ] request: [Function: bound ], call: [Function: bound ], sendTransaction: [Function: bound ], estimateGas: [Function: bound ], getData: [Function: bound ], string: [Circular] }, proof: { [Function: bound ] request: [Function: bound ], call: [Function: bound ], sendTransaction: [Function: bound ], estimateGas: [Function: bound ], getData: [Function: bound ], '': [Circular] }, allEvents: [Function: bound ] }, notarize: { [Function] call: [Function], sendTransaction: [Function], request: [Function: bound ], estimateGas: [Function] }, calculateProof: { [Function] call: [Function], sendTransaction: [Function], request: [Function: bound ], estimateGas: [Function] }, proof: { [Function] call: [Function], sendTransaction: [Function], request: [Function: bound ], estimateGas: [Function] }, sendTransaction: [Function], send: [Function], allEvents: [Function: bound ], address: '0x732e24b2de90ec2e009748a6bf2d379ed1eee072', transactionHash: null } truffle(development)> (To exit, press ^C again or type .exit) truffle(development)> var e=Art.deployed undefined truffle(development)> console.log(e.address) undefined undefined'
您必須手動設置 web3,或者使用可以設置的框架。
這是手動執行的程式碼,testrpc 監聽
localhost:8545
(預設)var Web3 = require('web3'); var web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:8545')); web3.isConnected() // should return true if it all worked.
請注意,web3 必須安裝在本地(即在您的項目中
node_modules
),當我學習如何執行此操作時,這讓我很生氣。
這對於使用 web3 編譯的合約是如何工作的:
var source = 'contract demo {string public name = "Petros"; function changeName(string _newName){name = _newName; } }'; var compiled = web3.eth.compile.solidity(source); var abi = compiled['<stdin>:demo'].info.abiDefinition;
希望對您有所幫助。