Web3js

web3js 和 testrpc 的問題

  • April 11, 2018

在此處輸入圖像描述

並且在 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;

希望對您有所幫助。

引用自:https://ethereum.stackexchange.com/questions/13694