La prueba en la red ropsten con truffle.js me da este error

root@ubuntu-4gb-nyc3-01:~# truffle migrate --network ropsten (nodo:14686) UnhandledPromiseRejectionWarning: Rechazo de promesa no manejado (id de rechazo: 2): TypeError: this.provider.sendAsync no es una función (nodo:14686 ) [DEP0018] DeprecationWarning: los rechazos de promesa no controlados están en desuso. En el futuro, los rechazos de promesas que no se controlen terminarán el proceso de Node.js con un código de salida distinto de cero. Usando la red 'ropsten'.

Ejecutando migración: 1_initial_migration.js

Después de eso, sale a root@ubuntu-4gb-nyc3-01:~# sin ejecutar 2_deploy_contracts.js

Mi truffle.js se parece a lo siguiente:

**var bip39 = require("bip39");
var hdkey = require('ethereumjs-wallet/hdkey');
var ProviderEngine = require("web3-provider-engine");
var WalletSubprovider = require('web3-provider-engine/subproviders/wallet.js');
var Web3Subprovider = require("web3-provider-engine/subproviders/web3.js");
var Web3 = require("web3");
// Get our mnemonic and create an hdwallet
var mnemonic = "twelve words we can find in metamask settings reveal seed words blabla";
var hdwallet = hdkey.fromMasterSeed(bip39.mnemonicToSeed(mnemonic));
// Get the first account using the standard hd path.
var wallet_hdpath = "m/44'/60'/0'/0/";
var wallet = hdwallet.derivePath(wallet_hdpath + "0").getWallet();
var address = "0x" + wallet.getAddress().toString("hex");
console.log(address);
var providerUrl = "https://ropsten.infura.io/mytoken";
var engine = new ProviderEngine();
engine.addProvider(new WalletSubprovider(wallet, {}));
engine.addProvider(new Web3Subprovider(new Web3.providers.HttpProvider(providerUrl)));
engine.start(); // Required by the provider engine.
module.exports = {
  networks: {
    ropsten: {
      network_id: 3,    // Official ropsten network id
      provider: engine, // Use our custom provider
      from: address,     // Use the address we derived
      gas: 3000000
    }
  },
  rpc: {
    // Use the default host and port when not using ropsten
    host: "my-server-ip-goes-here",
    port: 8545
  }
  };**

¿Dónde encontraré la función this.provider.sendAsync?

Estoy usando el nodo: v8.2.1 y Ubuntu 16.04

Estoy realmente atascado con esto. Cualquier ayuda sería apreciada. Gracias

Respuestas (2)

Yo tenía el mismo error. Se resolvió después de instalar la versión anterior de las bibliotecas npm. No creo que esta sea la solución ideal.

$ npm install ethereumjs-wallet bip39 web3-provider-engine@8.6.1 web3@0.18.4 zeppelin-solidity --save

¿cambió este valor de var mnemonic = "doce palabras que podemos encontrar en la configuración de metamáscara revelan palabras semilla blabla"; a tu frase METAMASK

bien ya veo ¿tengo que cambiar los mnemotécnicos? ¿Quieres decir que tengo que usar la extensión real de Chrome metamask y luego obtener el valor de allí? Lo siento. Me confundí.
sí, se creará su cuenta por primera dirección eth en metamask
Creé un mnemotécnico de 12 palabras a partir del complemento metamask de Chrome. y luego intenté implementar el conract en ropsten nuevamente después de actualizar truffle.js con el nuevo mnemotécnico. Nuevamente, el mismo error: UnhandledPromiseRejectionWarning: Rechazo de promesa no manejado (ID de rechazo: 2): TypeError: this.provider.sendAsync no es una función (nodo: 22993) [DEP0018] DeprecationWarning: Los rechazos de promesa no manejados están en desuso. En el futuro, los rechazos de promesas que no se controlen terminarán el proceso de Node.js con un código de salida distinto de cero.