Problema con web3js y testrpc

ingrese la descripción de la imagen aquí

Y tengo un problema con web3js en testrpc, no puedo crear y configurar una instancia de web3. Terminal dijo que web3 no está definido. (error de referencia) También cuando trato de ejecutar métodos en mi contrato, por ejemplo

var e = Mycontract.deployed();

También tengo indefinido y cuando intento

console.log(e.address);

he instalado web3js

  • nodo js -versión 6~
  • npm versión 3~
  • también pudín mal instalado, trufa

¿Necesito instalar algo más? o reinstalar?

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'

Respuestas (3)

Debe configurar web3 manualmente o usar un marco que lo haga.

Aquí está el código para hacerlo manualmente, con testrpc escuchando localhost:8545(el valor predeterminado)

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

Tenga en cuenta que web3 debe instalarse localmente (es decir, en su proyecto node_modules) Eso me mordió cuando estaba aprendiendo cómo hacer esto.

ty por respuesta. He instalado web3 en mi proyecto (me corresponde :) luego pegue su código en Node (soy nuevo en JS, y también lo pego en la consola de trufas). Pero tampoco puedo llamar a funciones en mi contrato. (foto agregada) Por favor, ayuda :(
¿ Ejecutaste truffle init ? A partir de esa captura de pantalla, no parece un directorio de proyecto que crearía truffle.
Sí. y también haga npm init para instalar web3 localy

Así funciona el contrato compilado con 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;

Espero que te ayude.

Primero, puede verificar qué versión de truffle está usando escribiendo:

$ truffer --version

truffle se comporta de manera diferente en v2.x y v3.x, en v3.x no resuelve la deployed()Promesa automáticamente, por lo que si desea registrar una instancia de contrato, puede hacer lo siguiente:

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

En segundo lugar, asegúrese de que el nombre del contrato sea el mismo que el nombre del archivo del código fuente.

Espero que esto ayude.

tenga la versión 3x y actualice la pregunta con su respuesta. también undif;(
@Vladimir He actualizado el código para que se ejecute en la consola de trufas, échale un vistazo.