Problem mit web3js und testrpc

Geben Sie hier die Bildbeschreibung ein

Und ich habe ein Problem mit web3js auf testrpc, ich kann keine Instanz von web3 erstellen und festlegen. Terminal sagte, dass web3 undefiniert ist. (ref error) Auch wenn ich zum Beispiel versuche, Methoden in meinem Vertrag auszuführen

var e = Mycontract.deployed();

Ich habe auch undefined und beim Versuch

console.log(e.address);

Ich habe web3js installiert

  • node js -version 6~
  • npm-Version 3~
  • auch schlecht installierter Pudding, Trüffel

Muss ich noch etwas installieren? oder neu installieren?

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'

Antworten (3)

Sie müssen entweder web3 manuell einrichten oder ein entsprechendes Framework verwenden.

Hier ist der Code, um dies manuell zu tun, wobei testrpc auf localhost:8545(Standard) lauscht

var Web3 = require('web3');
var web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:8545'));
web3.isConnected() // should return true if it all worked.

Beachten Sie, dass web3 lokal installiert sein muss (dh in Ihrem Projekt node_modules). Das hat mich gebissen, als ich lernte, wie man das macht.

ty für die Antwort. Ich habe web3 in meinem Projekt installiert (es ist mein Fall :) und füge dann Ihren Code in Node ein (ich bin neu in JS und füge ihn auch in die Truffle-Konsole ein). Kann aber auch keine Funktionen in meinem Vertrag aufrufen. (Foto hinzugefügt) Bitte helfen :(
Hast du truffle init ausgeführt ? Aus diesem Screenshot sieht es nicht wie ein Projektverzeichnis aus, das Truffle erstellen würde.
Ja. und führen Sie auch npm init aus, um web3 lokal zu installieren

So funktioniert es für den erstellten Vertrag mit 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;

Hoffe es hilft dir.

Zuerst können Sie überprüfen, welche Trüffelversion Sie verwenden, indem Sie Folgendes eingeben:

$ truffer --version

truffle verhält sich in v2.x und v3.x unterschiedlich, in v3.x wird das deployed()Promise nicht automatisch aufgelöst, wenn Sie also eine Vertragsinstanz registrieren möchten, können Sie Folgendes tun:

> var poe = Art.at(Art.address)
> assert.ok(poe.address)      // "address" should be defined
> poe.notarize('Hello World') // try to call the contract function

Stellen Sie zweitens sicher, dass der Vertragsname mit dem Namen der Quellcodedatei identisch ist.

Hoffe das hilft.

habe Version 3x und aktualisiere die Frage mit deiner Antwort. auch undif;(
@Vladimir Ich habe den Code aktualisiert, der in der Truffle-Konsole ausgeführt werden soll, schau mal.